如何添加处理nan值的新列

时间:2016-09-27 01:24:02

标签: python pandas

我有一个像这样的数据框

    A   B
0   a   1
1   b   2
2   c   3
3   d  nan
4   e  nan

我想在下面添加C列

    A   B    C
0   a   1    a1
1   b   2    b2
2   c   3    c3
3   d  nan   d
4   e  nan   e

所以我试过

df["C"]=df.A+df.B

但它返回

 C
a1
b2
c3
nan
nan

如何获得正确的结果?

3 个答案:

答案 0 :(得分:2)

在您的代码中,我认为数据框中元素的数据类型是str,因此,请尝试fillna

In [10]: import pandas as pd
In [11]: import numpy as np
In [12]: df = pd.DataFrame({'A': ['a', 'b', 'c', 'd', 'e'], 
                            'B': ['1', '2', '3', np.nan, np.nan]})

In [13]: df.B.fillna('')
Out[13]: 
0    1
1    2
2    3
3     
4     
Name: B, dtype: object

In [14]: df
Out[14]: 
   A    B
0  a    1
1  b    2
2  c    3
3  d  NaN
4  e  NaN

[5 rows x 2 columns]

In [15]: df.B = df.B.fillna('')

In [16]: df["C"]=df.A+df.B

In [17]: df
Out[17]: 
   A  B   C
0  a  1  a1
1  b  2  b2
2  c  3  c3
3  d      d
4  e      e

[5 rows x 3 columns]

答案 1 :(得分:0)

df['C'] = pd.Series(df.fillna('').values.tolist()).str.join(' ')

答案 2 :(得分:0)

您可以将add方法与fill_value参数

一起使用
df['C'] = df.A.add(df.B, fill_value='')
df

enter image description here