python-熊猫-从每个用户检索先前的结果行

python-熊猫-从每个用户检索先前的结果行,第1张

概述我是熊猫新手.我有一个看起来像这样的数据框(只有更大): 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 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-熊猫-从每个用户检索先前的结果/行 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1199466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存