【发布时间】:2019-08-29 00:02:44
【问题描述】:
我正在尝试合并这两个数据帧(df1 和 df2):
gmDate n pf pa
0 2012-10-31 ATL 0 0
1 2012-10-31 BKN 0 0
2 2012-10-31 BOS 107 120
3 2012-10-31 CHA 0 0
4 2012-10-31 CHI 0 0
5 2012-10-31 CLE 94 84
6 2012-10-31 DAL 99 91
7 2012-10-31 DEN 0 0
8 2012-10-31 DET 0 0
9 2012-10-31 GS 0 0
gmDate t tw tf ta o ow of oa
0 2012-10-30 WAS 0 0 0 CLE 1 0 0
1 2012-10-30 BOS 0 0 0 MIA 1 0 0
2 2012-10-30 DAL 1 0 0 LAL 0 0 0
3 2012-10-31 DEN 0 0 0 PHI 1 0 0
4 2012-10-31 IND 1 0 0 TOR 0 0 0
5 2012-10-31 HOU 1 0 0 DET 0 0 0
6 2012-10-31 SAC 0 0 0 CHI 1 0 0
7 2012-10-31 SA 1 0 0 NO 0 0 0
8 2012-10-31 DAL 0 0 0 UTA 1 0 0
9 2012-10-31 GS 1 0 0 PHO 0 0 0
根据匹配 gmDate 和 n 与 df2 中的 t 或 o,我需要 df1 中的 pf 和 pa 填充到 df2 中的 tf 和 ta 或 of 和 oa 中。 df1 包括日历中的每一天,无论那天是否有球队参加比赛,而 df2 仅包含球队参加比赛的天数。我无法获得合并或加入为我工作。
目前我一直在尝试通过运行两个单独的 for 循环来做到这一点:
for s in range(0, len(df1)):
for d in range(0, len(df2):
if df1.iloc[s,0] == df2.iloc[d,0] and df1.iloc[s,1] == df2.iloc[d,1]:
df2.iloc[d,3] = df1.iloc[s,2]
df2.iloc[d,4] = df1.iloc[s,3]
然后:
for s in range(0, len(df1)):
for d in range(0, len(df2):
if df1.iloc[s,0] == df2.iloc[d,0] and df1.iloc[s,1] == df2.iloc[d,5]:
df2.iloc[d,7] = df1.iloc[s,2]
df2.iloc[d,8] = df1.iloc[s,3]
他们每个人都需要很长时间才能运行。 df1 的长度为 29,520,df2 的长度为 7,379。
抱歉,如果这太混乱了。我正在寻找通过合并/连接执行此操作的最佳方法,或者不要让我的循环永远运行。
提前感谢您的帮助。
【问题讨论】:
标签: python pandas dataframe join merge