首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多个句柄迭代Pandas DataFrame,并迭代地追加已编辑的行?

使用多个句柄迭代Pandas DataFrame,并迭代地追加已编辑的行?
EN

Stack Overflow用户
提问于 2019-06-07 12:34:35
回答 1查看 30关注 0票数 0

我有三个数据:

  • 具有比赛历史记录的df1 (按日期组织)
  • 带有玩家统计信息的df2 (按玩家名称组织)
  • 每场比赛( df3 )的球员统计数据(df2)之间的df1差异

我想做这样的事情:

代码语言:javascript
复制
    for idx, W_nm, L_nm in df1[['index','winner_name','loser_name']].values:
      df3.loc[idx] = df2.loc[W_nm] - df2.loc[L_nm]
      #... edit this row further

它失败了,因为:

  • 'idx'没有引用df1的指数。
  • df3没有定义的列

是否有办法参考第一行的指数?

我读过iterrows().loc[]慢7倍,我有很多数据要处理

还有什么比这更干净的吗?

代码语言:javascript
复制
    for idx in df1.index:
      W_nm = df1.loc[idx,'winner_name']
      L_nm = df1.loc[idx,'loser_name']
      df3.loc[idx] = df2.loc[W_nm] - df2.loc[L_nm]
      #... edit this row further

它没有修正“没有定义的列”,而是给了我句柄。

所以我期待这样的事情:

代码语言:javascript
复制
 df1
[            'Loser'  'Winner'   'Score'
  0          Harry    Hermione   3-7   ...
  1          Harry    Ron        0-2   ...
  2          Ron      Voldemort  7-89   ... ]

 df2
[            'Spells' 'Allies'
  Harry      23       84      ...
  Hermione   94       68      ...
  Ron        14       63      ...
  Voldemort  97       92      ... ]

then

df3
[            'Spells' 'Allies'
  0          -71      16      ...
  1          9        21      ...
  2          -83      -29     ... ]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-07 12:55:09

你需要的是join

代码语言:javascript
复制
loser = df1.join(df2, on='Loser').loc[:,['Spells', 'Allies']]
winner = df1.join(df2, on='Winner').loc[:,['Spells', 'Allies']]
df3 = winner - loser

通过您的示例,提供了以下数据:

代码语言:javascript
复制
   Spells  Allies
0      71     -16
1      -9     -21
2      83      29
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56494449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档