【问题标题】:How to generate a column based on multiple conditions in pandas?如何根据 pandas 中的多个条件生成列?
【发布时间】:2021-09-15 06:06:30
【问题描述】:

我想要给定问题的 python 代码。 CSV 格式的数据集如下所示:

ID   SCORE
 1     3
 1     5
 1     8
 1     1
 2     6
 2     0
 2     3
 1     6
 1     4

从这个数据集中,我想创建一个名为“OUTPUT”的列。条件是当ID=1时,SCORE的每一行都应该相加直到ID=2,并且总和应该插入到输出列。当 ID=2 时会应用类似的逻辑。这是我想要的输出:

ID   SCORE  OUTPUT
 1     3      17 
 1     5      17 
 1     8      17 
 1     1      17 
 2     6      9 
 2     0      9 
 2     3      9 
 1     6      10
 1     4      10

【问题讨论】:

  • 这是一个很好的问题,但下次发布一些代码来展示你自己的努力,花点时间阅读minimal reproducible exampleHow to Ask,你会在pandas标签中相对快速地获得帮助: ) 欢迎来到 SO

标签: python pandas csv data-science


【解决方案1】:

创建自定义分组,然后使用 .transformsum

df['OUTPUT'] = df.groupby(df['ID'].ne(df['ID'].shift())\
                 .cumsum())['SCORE'].transform('sum')


print(df)

   ID  SCORE  OUTPUT
0   1      3      17
1   1      5      17
2   1      8      17
3   1      1      17
4   2      6       9
5   2      0       9
6   2      3       9
7   1      6      10
8   1      4      10

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2017-12-19
    • 2020-05-09
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    相关资源
    最近更新 更多