[英]Merging two dataframes with multiple conditions in Pandas
出於某種原因,我不能完全確定為什么 Pandas 沒有合並我的兩個數據幀。 我已經遵循了其他幾個解決方案,但我仍然沒有得到預期的 output。
我的主要 dataframe, df
有籃球運動員數據,並且非常大,有 10000 多行。 這是df
的片段:
Date Team
12/10/2020 BOS
12/10/2020 ATL
12/10/2020 PHI
12/11/2020 BOS
12/11/2020 ATL
12/11/2020 PHI
我的第二個 dataframe ps
小得多,有 1000 行,並且有團隊信息:
Date Team Points H/A
12/10/2020 ATL 70 1
12/10/2020 PHI 120 1
12/10/2020 BOS 100 0
12/11/2020 BOS 110 0
12/11/2020 PHI 93 1
12/11/2020 ATL 104 0
匹配df
和ps
后的df
的預期 output :
Date Team Points H/A
12/10/2020 BOS 100 0
12/10/2020 ATL 70 1
12/10/2020 PHI 120 1
12/11/2020 BOS 110 0
12/11/2020 ATL 104 0
12/11/2020 PHI 93 1
我的嘗試: pd.merge(df,ps, on=['Team','Date'])
df = pd.merge(df,ps, on=['Team','Date'])
我認為與上面的相同,只是再次分配df
。
當我執行上述任一操作並將df
保存到 CSV 時, ps
標頭和數據不會出現在df
的任何位置。 我想將ps
與df
合並,匹配“日期”和“團隊”,以便df
中的每個玩家都有來自ps
列“Points”和“H/A”的相應值。 我應該注意,兩個數據集中的日期都不是按時間順序排列的,如果這有區別的話。
這對我有用:
import pandas as pd
df = pd.DataFrame({'Date': ['12/10/2020']*3 + ['12/11/2020']*3,
'Team': ['BOS', 'ATL', 'PHI', 'BOS', 'ATL', 'PHI']})
ps = pd.DataFrame({'Date': ['12/10/2020']*3 + ['12/11/2020']*3,
'Team': ['ATL', 'PHI', 'BOS', 'BOS', 'PHI', 'ATL'],
'Points': [70, 120, 100, 110, 93, 104],
'H/A': [1, 1, 0, 0, 1, 0]})
df = pd.merge(df,ps, on=['Team','Date'])
print(df)
Output:
Date Team Points H/A
0 12/10/2020 BOS 100 0
1 12/10/2020 ATL 70 1
2 12/10/2020 PHI 120 1
3 12/11/2020 BOS 110 0
4 12/11/2020 ATL 104 0
5 12/11/2020 PHI 93 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.