[英]Compare a timestamp with another between 2 dataframes and populate values into a new column
[英]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.