有空值的两个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.nan和b相加,最终是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'
浙公网安备 33010602011771号