簡體   English   中英

Python Pandas - 如何將 dataframe 的兩列的值與另一個 Dataframe 的列進行比較?

[英]Python Pandas - How to compare values from two columns of a dataframe to another Dataframe columns?

我有兩個數據幀,我需要根據條件在兩列之間進行比較並打印 output。例如:

df1:

| ID    | Date      | value  |
| 248   | 2021-10-30| 4.5    |
| 249   | 2021-09-21| 5.0    |
| 100   | 2021-02-01| 3,2    |

df2:

| ID    | Date      | value  |
| 245   | 2021-12-14| 4.5    |
| 246   | 2021-09-21| 5.0    |
| 247   | 2021-10-30| 3,2    |
| 248   | 2021-10-30| 3,1    |
| 249   | 2021-10-30| 2,2    |
| 250   | 2021-10-30| 6,3    |
| 251   | 2021-10-30| 9,1    |
| 252   | 2021-10-30| 2,0    |

我想編寫一個代碼來比較兩個數據幀之間的 ID 列和日期列是否具有如下條件,

  • 如果“ID 和日期從 df1 匹配到 df2”:print(df1['compare'] = 'Both matching')

  • 如果“ID 匹配並且日期從 df1 到 df2 不匹配”:print(df1['compare'] = 'Date not matching')

  • 如果“ID 從 df1 到 df2 不匹配”:print(df1['compare'] = 'ID 不可用')

我的結果df1應該如下所示:

df1(預期結果):

| ID    | Date      | value  | compare
| 248   | 2021-10-30| 4.5    | Both matching
| 249   | 2021-09-21| 5.0    | Id matching - Date not matching
| 100   | 2021-02-01| 3,2    | Id not available

如何用 Python pandas dataframe 做到這一點?

我建議你做的是使用iterrows 這可能不是最好的主意,但仍然可以解決您的問題:

compareColumn = []
for index, row in df1.iterrows():
  df2Row = df2[df2["ID"] == row["ID"]]
  if df2Row.shape[0] == 0:
    compareColumn.append("ID not available")
  else:
    check = False
    for jndex, row2 in df2Row.iterrows():
      if row2["Date"] == row["Date"]:
        compareColumn.append("Both matching")
        check = True
        break
    if check == False:
      compareColumn.append("Date not matching")
df1["compare"] = compareColumn
df1

Output

ID 日期 價值 相比
0 248 2021-10-30 4.5 兩者匹配
1個 249 2021-09-21 5個 日期不匹配
2個 100 2021-02-01 3.2 身份證件不可用

假設 'ID' 列是索引,那么我們可以這樣做:

def f(x):
    if x.name in df2.index:
        return 'Both matching' if x['Date']==df2.loc[x.name,'Date'] else 'Date not matching'
    return 'ID not available'

df1 = df1.assign(compare=df1.apply(f,1))

print(df1)

           Date value            compare
ID                                      
248  2021-10-30   4.5      Both matching
249  2021-09-21   5.0  Date not matching
100  2021-02-01   3,2   ID not available

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM