gpt4 book ai didi

python - 用另一个数据框中的值替换一个数据框中的零

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:41 24 4
gpt4 key购买 nike

我有两个数据帧 df1 和 df2:df1 显示在这里:

   age
0 42
1 52
2 36
3 24
4 73

df2 显示在这里:

   age
0 0
1 0
2 1
3 0
4 0

我想用 df1 中相应的条目替换 df2 中的所有零。更专业地说,如果 df2 中某个索引处的元素为零,那么我希望这个元素被 df1 中的相应条目替换。

因此,我希望 df2 看起来像:

   age
0 42
1 52
2 1
3 24
4 73

我尝试使用替换方法,但它不起作用。请帮忙 :)提前致谢。

最佳答案

你可以使用 where :

In [19]: df2.where(df2 != 0, df1)
Out[19]:
age
0 42
1 52
2 1
3 24
4 73

上面,df2 != 0 是一个 bool 数据帧。

In [16]: df2 != 0
Out[16]:
age
0 False
1 False
2 True
3 False
4 False

df2.where(df2 != 0, df1) 返回一个新的 DataFrame。当df2 != 0为True时,使用df2对应的值。如果为 False,则使用 df1 的相应值。


另一种方法是使用 df.loc 进行赋值。 :

df2.loc[df2['age'] == 0, 'age'] = df1['age']

df.loc[mask, col] 选择 bool 系列 mask 为 True 的 df 行,以及列标签是 col

In [17]: df2.loc[df2['age'] == 0, 'age']
Out[17]:
0 0
1 0
3 0
4 0
Name: age, dtype: int64

在赋值中使用时,例如df2.loc[df2['age'] == 0, 'age'] = df1['age'],Pandas 执行自动索引标签对齐。 (请注意上面的索引标签是 0、1、3、4——跳过了 2)。因此 df2.loc[df2['age'] == 0, 'age'] 中的值被 d1['age'] 中的相应值替换。尽管 d1['age'] 是一个索引标签为 012342被忽略,因为左侧没有对应的索引标签。

换句话说,

df2.loc[df2['age'] == 0, 'age'] = df1.loc[df2['age'] == 0, 'age']

也可以,但不需要在右侧添加限制。

关于python - 用另一个数据框中的值替换一个数据框中的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45701538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com