基于将另一个单元格与另一个数据帧的单元格-熊猫进行比较,更改一个数据帧中单元格的值

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

以上是关于基于将另一个单元格与另一个数据帧的单元格-熊猫进行比较,更改一个数据帧中单元格的值的主要内容,如果未能解决你的问题,请参考以下文章

将大写单元格与小写单元格分开排序

如何将具有数据的单元格与同一列中的空白单元格合并?

根据比较将单元格与数组和打印行进行比较

LibreOffice Calc 单元格文本

在Google表格中将具有相同值的多个单元格与一个单元格合并以求平均值

如何使单元格与 CollectionView 中的页脚部分重叠?