对不起,我真的不知道这个问题的题目该怎么说。 我不经常使用Python,我只是开始使用pandas和numpy包。在
当我尝试在一个循环中为pandas追加意外结果时。
我有一个从sql获得的数据集,并将其放入熊猫数据框(df):
print(df.head())
date visitor visitor_score home home_score W L
0 20160405 BOS 6 CLE 2 94 67
1 20160406 BOS 6 CLE 7 94 67
2 20160408 BOS 8 TOR 7 89 73
3 20160409 BOS 8 TOR 4 89 73
4 20160410 BOS 0 TOR 3 89 73
我还有另一个来自sql的数据集,我也把它放在pandas数据框中(dfBostonStats):
^{pr2}$我想将该数据帧(dfBostonStats)连接到第一个数据帧的每一行(df)。在
我决定我可以利用熊猫海螺我通过连接df的第一行来证明这一点:
print(pd.concat([df.iloc[[0]], dfBostonStats], axis=1))
date visitor visitor_score home home_score W L teamID ab \
0 20160405 BOS 6 CLE 2 94 67 BOS 5670
h ... era IPouts HA hra soa e fp bpf ppf dp
0 1598 ... 4.0 4319 1342 176 1362 75 0.987 108 106 139
然后,我尝试使用for循环将每一行连接起来,但结果出乎意料。 它正确地连接了一行,然后只打印我列出的第二个数据帧的一行(dfBostonStats)
for index, element in df.iterrows():
tempdf = pd.concat([df.iloc[[index]], dfBostonStats], axis=1)
concatDataFrame = concatDataFrame.append(tempdf, ignore_index=True)
print(concatDataFrame.head())
date visitor visitor_score home home_score W L teamID \
0 20160405 BOS 6.0 CLE 2.0 94.0 67.0 BOS
1 NaN NaN NaN NaN NaN NaN NaN BOS
2 20160406 BOS 6.0 CLE 7.0 94.0 67.0 NaN
3 NaN NaN NaN NaN NaN NaN NaN BOS
4 20160408 BOS 8.0 TOR 7.0 89.0 73.0 NaN
ab h ... era IPouts HA hra soa e fp \
0 5670.0 1598.0 ... 4.0 4319.0 1342.0 176.0 1362.0 75.0 0.987
1 5670.0 1598.0 ... 4.0 4319.0 1342.0 176.0 1362.0 75.0 0.987
2 NaN NaN ... NaN NaN NaN NaN NaN NaN NaN
3 5670.0 1598.0 ... 4.0 4319.0 1342.0 176.0 1362.0 75.0 0.987
4 NaN NaN ... NaN NaN NaN NaN NaN NaN NaN
bpf ppf dp
0 108.0 106.0 139
1 108.0 106.0 139
2 NaN NaN NaN
3 108.0 106.0 139
4 NaN NaN NaN
我不明白为什么只使用dfBostonStats打印该行,而只打印连接的行?
另一方面,我知道在for循环中,每次导致性能下降时都会出现一个拷贝,但我想一旦我得到了应该如何处理的数据,我就会处理这个问题。在
我认为如果需要按列} 与左连接一起使用。无需循环:
visitor
连接第一个数据帧,第二个按列teamID
将^{相关问题 更多 >
编程相关推荐