我是熊猫新手.
我有一个看起来像这样的数据框(只有更大):
Horses RaceDate position1 RedHorse 1/2/00 22 BlueHorse 1/2/00 63 YellowHorse 1/2/00 74 RedHorse 15/1/00 3
我想为以前的结果添加列.这样我的数据框可能最终看起来像:
Horses RaceDate position Prevposition1 RedHorse 1/2/00 2 32 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 0df['prevRun'] = df['Horse'].apply(prevRuns,raceDate = df['RaceDate'])
但这是行不通的.
ValueError: Can only compare IDentically-labeled SerIEs objects
为什么不起作用?
有没有更优雅的方式来实现我要完成的任务?
最佳答案您可以使用groupby shift:# convert dates to datetime and sort descendingdf['RaceDate'] = pd.to_datetime(df['RaceDate'],dayfirst=True)df = df.sort_values('RaceDate',ascending=False)# groupby and shift for prevIoUs positiondf['Prevposition'] = df.groupby('Horses')['position'].shift(-1)print(df) Horses RaceDate position Prevposition1 RedHorse 2000-02-01 2 3.02 BlueHorse 2000-02-01 6 NaN3 YellowHorse 2000-02-01 7 NaN4 RedHorse 2000-01-15 3 NaN
总结 以上是内存溢出为你收集整理的python-熊猫-从每个用户检索先前的结果/行 全部内容,希望文章能够帮你解决python-熊猫-从每个用户检索先前的结果/行 所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)