pandas dataframe插入空值

时间:2014-10-28 22:56:13

标签: python pandas

我有两个数据帧:

index  a     b      c     d
1      x     x      x     x 
2      x     nan    x     x
3      x     x      x     x
4      x     nan    x     x


index  a     b        e
3      x     nan      x 
4      x     x        x
5      x     nan      x
6      x     x        x

我想把它变成以下内容,我们只是去除NaN值。这个问题的一个更简单的版本是第二个数据帧没有纳米值......

index  a    b    c    d   e
1      x    x    x    x   x
2      x    x    x    x   x
3      x    x    x    x   x
4      x    x    x    x   x
5      x    x    x    x   x
6      x    x    x    x   x

2 个答案:

答案 0 :(得分:2)

您可以将combine_firstfillna

一起使用
  

数据帧。的 combine_first 其他

     

组合两个DataFrame对象和   默认为调用方法的帧中的非空值。结果索引   列将是相应索引和列的并集

您可以阅读here

中的文档
import pandas as pd
d1 = pd.DataFrame([[nan,1,1],[2,2,2],[3,3,3]], columns=['a','b','c'])

d1
    a  b  c
0 NaN  1  1
1   2  2  2
2   3  3  3

d2 = pd.DataFrame([[1,nan,1],[nan,2,2],[3,3,nan]], columns=['b','d','e'])

d2
    b   d   e
0   1 NaN   1
1 NaN   2   2
2   3   3 NaN

d2.combine_first(d1) # d1's values are prioritized, if d2 has no NaN
    a  b  c   d   e
0 NaN  1  1 NaN   1
1   2  2  2   2   2
2   3  3  3   3 NaN

d2.combine_first(d1).fillna(5) # simply fill NaN with a value
   a  b  c  d  e
0  5  1  1  5  1
1  2  2  2  2  2
2  3  3  3  3  5

答案 1 :(得分:0)

使用nan_to_num用数字替换nan:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.nan_to_num.html

请申请:

from numpy import nan_to_num
df2 = df.apply(nan_to_num)

然后你可以根据需要合并数组。