簡體   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