gpt4 book ai didi

python - 根据另一个单元格与另一个数据帧单元格的比较来更改一个数据帧中单元格的值 - pandas

转载 作者:行者123 更新时间:2023-12-01 06:28:50 25 4
gpt4 key购买 nike

我有两个数据框,如下所示:

df1

col1 col2 col3
20 John Positive
21 Kate Negative
22 Nick Another



df2

col1 col2 col3
21 message white
22 text black
20 nothing orange,yellow
19 excel blue

我想让它们看起来像:

df3

col1 col2 col3
20 John orange,yellow
21 Kate white
22 Nick black

如果两个数据帧的 col1 中的数字匹配,我想将 col3 中 df1 的值更改为 col3 中 df2 的值。 (在 df2 的 col1 中,我获得的值比 df1 col1 中的值多,但它包含 df1 col1 中的所有数字)

我已经制定了如下所示的解决方案:

for i in range(len(df2)):
df1.loc[df1.col1 == df2.col1[i], ['col3']] = df2.col3[i]

我的解决方案有效,但确实很耗时。我希望使用 pandas 可以改进我的代码。您知道如何做到这一点吗?

最佳答案

使用DataFrame.merge左连接 DataFrame.fillna :

#column fo join with all columns for replace, here col3
cols = ['col1','col3']
df = df1.merge(df2[cols], on='col1', how='left', suffixes=('_','')).fillna(df1)[df1.columns]
print (df)
col1 col2 col3
0 20 John orange,yellow
1 21 Kate white
2 22 Nick black

或者使用Series.map如果只想替换一列,则按系列与df2:

df1['col3'] = df1['col1'].map(df2.set_index('col1')['col3']).fillna(df1['col3'])

或者:

df1['col3'] = df1['col1'].replace(df2.set_index('col1')['col3']).fillna(df1['col3'])

关于python - 根据另一个单元格与另一个数据帧单元格的比较来更改一个数据帧中单元格的值 - pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60002047/

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