我对熊猫不熟悉
我有一个数据帧,它看起来像这样(只是大得多):
Horses RaceDate Position
1 RedHorse 1/2/00 2
2 BlueHorse 1/2/00 6
3 YellowHorse 1/2/00 7
4 RedHorse 15/1/00 3
我想为以前的结果添加列。所以我的数据框可能会变成:
Horses RaceDate Position PrevPosition
1 RedHorse 1/2/00 2 3
2 BlueHorse 1/2/00 6 -
3 YellowHorse 1/2/00 7 -
4 RedHorse 15/1/00 3 -
我试过以下方法:
def prevRuns(horseName, raceDate):
horseDf = df.loc[df['Horse'] == horseName]
currentRace = horseDf.index[horseDf['RaceDate'] == raceDate]
if len(horseDf.index) >= currentRace:
return horseDf.at[currentRace+1,'Position']
else:
return 0
df['prevRun'] = df['Horse'].apply(prevRuns, raceDate = df['RaceDate'])
但它不起作用
ValueError: Can only compare identically-labeled Series objects
为什么不起作用
有没有更优雅的方法来实现我的目标
您可以使用
groupby
+shift
:相关问题 更多 >
编程相关推荐