出于某种原因,我无法确定为什么 Pandas 没有合并我的两个数据帧。我已经遵循了其他几种解决方案,但仍然没有得到预期的输出。
我的主数据框 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
我的第二个数据框 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
和 df
后 ps
的预期输出:
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
合并,匹配“Date”和“Team”,以便 df
中的每个玩家都有来自 ps
列“Points”的相应值"和"H/A"。我应该注意,如果这有区别的话,这两个数据集中的日期都不是按时间顺序排列的。
答案 0 :(得分:1)
这对我有用:
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)
输出:
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