如何根据pandas中的多个条件生成列?
How to generate a column based on multiple conditions in pandas?
我想要 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并且总和应插入 OUTPUT 列。当 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
创建自定义分组然后使用 .transform
和 sum
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
我想要 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并且总和应插入 OUTPUT 列。当 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
创建自定义分组然后使用 .transform
和 sum
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