我有两个数据帧:
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
答案 0 :(得分:2)
您可以将combine_first
与fillna
:
数据帧。的 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)
然后你可以根据需要合并数组。