【问题标题】:How to compare 2 dataframes and generate new dataframe如何比较 2 个数据框并生成新的数据框
【发布时间】:2019-09-26 04:48:44
【问题描述】:

我有 2 个相似的数据帧,我想根据条件将第一个数据帧的每一行与第二个数据帧的每一行进行比较。数据框如下所示:

基于此比较,我想生成一个类似的数据框,其中包含一个新列“更改”,其中包含基于以下条件的更改:

如果行具有相似的值,则 'change'='identical' 否则如果日期更改,则 'change'='new date'。

【问题讨论】:

  • 欢迎来到 StackOverflow。请花时间阅读how to provide a great pandas example 上的这篇文章以及如何提供minimal, Complete, and Verifiable example 并相应地修改您的问题。这些关于如何提出好问题的提示也可能很有用。
  • 如果您能提供一个更完整的示例并包含您迄今为止尝试过的内容,这将有所帮助。在这种情况下:两个示例输入数据帧和所需的输出数据帧。

标签: python pandas loops


【解决方案1】:

这是一个简单的解决方法。

# Import pandas library 
import pandas as pd 

# One dataframe
data = [['foo', 10], ['bar', 15], ['foobar', 14]] 
df = pd.DataFrame(data, columns = ['Name', 'Age']) 

# Another similar dataframe but foo age is 13 this time 
data = [['foo', 13], ['bar', 15], ['foobar', 14]] 
df2 = pd.DataFrame(data, columns = ['Name', 'Age'])
df3 = df2.copy()
for index, row in df.iterrows():
     if df.at[index,'Age'] != df2.at[index,'Age']:
          df3.at[index,'Change']="Changed"
df3["Change"].fillna("Not Changed",inplace = True)
print(df3)

这是输出

     Name  Age       Change
0     foo   13      Changed
1     bar   15  Not Changed
2  foobar   14  Not Changed

【讨论】:

  • 嘿,欢迎来到 Stack Overflow!您能否花点时间edit您的答案并解释它是如何工作的?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
  • 2020-11-25
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
相关资源
最近更新 更多