簡體   English   中英

Pandas 比較兩個數據框中的兩列,如果有匹配項,則從第三列獲取值轉換為周數

[英]Pandas compare two columns from two dataframes if there is a match get value from third column convert to week number

試圖使一份報告自動化,但它超出了我目前的技能水平,請盡可能提供幫助。 df1

report = {'Name':["one", "two", "three", "four", "five"],'Week_Num':['','','','',''],"Week_1":['1','1','','',''],"Week_2":['','1','','1',''],"Week_3":['','','','','1'],"Week_4":['','','1','',''],"Week_5":['','','','','']}

DF2

data = {'Name': ["one", "two", "four", "five", "two", "three"],
    "Dates":["03/01/2022", "09/01/2022", "13/01/2022", "21/01/2022", "01/01/2022","28/01/2022"]}

現在我必須將 report['Name'] 與數據 ['Name'] 匹配,如果匹配得到 data["Dates"] 將 data["Dates"] 轉換為 week_number"Today is week 18", and increase每場比賽的 report.at[match, week_number] += 1 的值。 預計 output:

report = {'Name':["one", "two", "three", "four", "five"],'Week_Num':['','','','',''],"Week_1":['1','1','','',''],"Week_2":['','1','','1',''],"Week_3":['','','','','1'],"Week_4":['','','1','',''],"Week_5":['','','','','']}

嘗試merge

data["Week_Num"] = pd.to_datetime(data["Dates"],format="%d/%m/%Y").dt.strftime("%W").astype(int).add(1)

counts = data[["Name","Week_Num"]].merge(report["Name"], how="right").set_index("Name")
output = pd.get_dummies(counts["Week_Num"]).reindex(range(1,6),axis=1,fill_value=0).groupby(level=0).sum().reindex(report["Name"]).reset_index()

>>> output
    Name  1  2  3  4  5
0    one  0  1  0  0  0
1    two  1  1  0  0  0
2  three  0  0  0  0  1
3   four  0  0  1  0  0
4   five  0  0  0  1  0

暫無
暫無

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

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