说,我有两个数据集:
A:
ATime X Y Z
1.2 2 15 2
1.4 3 12 1
1.5 1 10 6
1.6 2 9 10
1.9 1 1 9
B:
Btime C D E
1.2 12 25 12
1.3 13 22 11
1.4 11 20 16
1.7 12 29 12
1.9 11 21 19
2.0 08 10 11
2.4 10 12 15
我正在合并到一个看起来像这样的数据集:
Btime C D E ATime X Y Z
1.2 12 25 12 1.2 2 15 2
1.3 13 22 11 1.4 1 10 6
1.4 11 20 16 1.5 2 9 10
1.7 12 29 12 1.6 1 1 9
1.9 11 21 19 1.9 0 0 0
2.0 08 10 11 0 0 0 0
2.4 10 12 15 0 0 0 0
是否有一种简单的方法可以在Atime中用Btime中列出的时间(2.0,2.4)替换两个0?
...
现在我正在使用以下内容合并pandas中的两个数据集:
a = pd.read_csv("a")
b = pd.read_csv("b")
merged = a.join(b, how="outer")
filled = merged.fillna(0)
但这只是给了我0的情况。
答案 0 :(得分:2)
是的,您可以将系列传递给fillna
:
merged["Atime"] = merged["Atime"].fillna(b.Btime)
答案 1 :(得分:0)
使用loc
和布尔索引来选择值并分配回来:
In [327]:
# filter just those rows where 'ATime' is 0 and take the corresponding 'Btime' value
merged.loc[merged["ATime"] == 0, "ATime"] = merged["Btime"]
merged
Out[327]:
ATime X Y Z Btime C D E
0 1.2 2 15 2 1.2 12 25 12
1 1.4 3 12 1 1.3 13 22 11
2 1.5 1 10 6 1.4 11 20 16
3 1.6 2 9 10 1.7 12 29 12
4 1.9 1 1 9 1.9 11 21 19
5 2.0 0 0 0 2.0 8 10 11
6 2.4 0 0 0 2.4 10 12 15