有条件地替换丢失的数据Pandas

2024-05-13 12:15:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据集:

答:

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

乙:

^{pr2}$

我正在合并到一个数据集中,该数据集如下所示:

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 

有没有一种简单的方法可以用Btime中列出的times(2.0,2.4)来代替Atime中的两个0?在

。。。在

现在,我正在使用如下方法合并pandas中的两个数据集:

a = pd.read_csv("a")
b = pd.read_csv("b")
merged = a.join(b, how="outer")
filled = merged.fillna(0)

但这只是给了我0的情况


Tags: csv数据方法pandasreadmergedhowpd
2条回答

使用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

是的,您可以将序列传递给fillna

merged["Atime"] = merged["Atime"].fillna(b.Btime)

相关问题 更多 >