有空值的两个series(字符串类型)如何拼接?

使用pandas在处理excel数据的时候碰到一个问题:
需要将dataframe中两列字符串进行合并拼接,其中两列中的部分值都存在缺测值的情况,这样相加就会因为其中一个为缺测值导致最终结果变为缺测值。
实例代码如下:

import pandas as pd
import numpy as np

Ser1 = pd.Series(['a', np.nan, 'c', 'd'])
Ser2 = pd.Series(['a', 'b', 'c', 'd'])
print(Ser1+Ser2)

最终显示如下:

0     aa
1    NaN
2     cc
3     dd
dtype: object

即对于第二个值np.nanb相加,最终是NaN,而不是我要的b

最终在大佬的提醒下,使用fillna函数来将np.nan替换为'',修改如下:

Ser1.fillna('', inplace=True)
Ser2.fillna('', inplace=True)
print(Ser1+Ser2)

其结果如下:

0    aa
1     b
2    cc
3    dd
dtype: object


复盘发现NaN''是完全不同的类型,即使在excel文件中显示一致!!!

a = np.nan
b = ''
c = None
print(type(a))  # <class 'float'>
print(type(b))  # <class 'str'>
print(type(c))  # <class 'NoneType'

posted on 2021-02-07 23:11  里斯斯里  阅读(547)  评论(0)    收藏  举报

导航