基于将另一个单元格与另一个数据帧的单元格-熊猫进行比较,更改一个数据帧中单元格的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于将另一个单元格与另一个数据帧的单元格-熊猫进行比较,更改一个数据帧中单元格的值相关的知识,希望对你有一定的参考价值。
我有两个看起来像这样的数据框:
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的值。 (在col1的df2中,我得到的值比df1 col1中的更多,但它包括df1 col1中的所有数字)
我已经提出了如下解决方案:
for i in range(len(df2)):
df1.loc[df1.col1 == df2.col1[i], ['col3']] = df2.col3[i]
而且我的解决方案正在工作,但这确实很耗时。我希望使用熊猫可以改善我的代码。你有办法吗?
[将DataFrame.merge
与左联接DataFrame.merge
一起使用:
DataFrame.fillna
或者如果只希望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
一起使用:
Series.map
或:
df2
以上是关于基于将另一个单元格与另一个数据帧的单元格-熊猫进行比较,更改一个数据帧中单元格的值的主要内容,如果未能解决你的问题,请参考以下文章