繁体   English   中英

如何比较两个数据帧之间特定列中的值以检查较新的 dataframe 列中是否有新值?

[英]How to compare values in a specific column between 2 dataframes to check if there's a new value in the newer dataframe column?

我不断从网站中提取新数据,我的目标是将上次提取数据时特定列中的数据与新提取的数据进行比较。 如果有新行(通过比较每一列中的数据来识别,例如,每个数据帧中的一个名称列)则取与新名称关联的行并将其移动到新刮取的 dataframe 中的数据顶部(原因是我正在抓取的网站上的数据不是从最新到最旧的顺序)。 我想出了如何从 dataframe 中抓取数据、删除列和删除具有特定值的行,但这一直是我的难题。 我感谢你们提供的所有帮助!

示例数据框:

olddf = pd.DataFrame({'Name': ['apple', 'oranage', 'banana'], 'Value': ['red', 'orange', 'yellow'])
newdf = pd.DataFrame({'Name': ['apple', 'oranage', 'greenapple', 'banana'], 'Value': ['red', 'orange', 'green', 'yellow'])
goaldf = pd.DataFrame({'Name': ['greenapple', 'apple', 'oranage', 'banana'], 'Value': ['green', 'red', 'orange', 'yellow'])

旧示例 dataframe output:

   Name       Value
0  apple      red
1  orange     orange
2  banana     yellow

新示例 dataframe output:

   Name       Value
0  apple      red
1  orange     orange
2  greenapple green
3  banana     yellow

目标示例 dataframe output:

   Name       Value
0  greenapple green
1  apple      red
2  orange     orange
3  banana     yellow

利用 -

common = newdf.merge(olddf,on=['Name','Value'])
pd.concat([newdf[(~newdf.Name.isin(common.Name))&(~newdf.Value.isin(common.Value))], olddf]).reset_index(drop=True)

Output

         Name   Value
0  greenapple   green
1       apple     red
2     oranage  orange
3      banana  yellow

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM