pandas cumsum 跳过列

use*_*518 2 dataframe pandas cumsum

我是熊猫的新手,我可以添加到 cumsum 作为

df.cumsum(axis=1)

   y0  y1  y2
0   2   3   4
1   2   2   3
2   0   0   0
3   1   2   3
   y0  y1  y2
0   2   5   9
1   2   4   7
2   0   0   0
3   1   3   6
Run Code Online (Sandbox Code Playgroud)

但是有没有办法只在前 2 列上执行,即跳过 y2?

ALo*_*llz 6

您还可以用来.loc仅选择您关心的列。

cols = ['y0', 'y1']
df.loc[:, cols] = df.loc[:, cols].cumsum(axis=1)
Run Code Online (Sandbox Code Playgroud)

输出

   y0  y1  y2
0   2   5   4
1   2   4   3
2   0   0   0
3   1   3   3
Run Code Online (Sandbox Code Playgroud)

loc是一种对 DataFrame 进行切片的灵活方法,通常遵循以下格式:

.loc[row_labels, column_labels]

其中 an:可用于指示所有行或 all_columns。


har*_*pan 5

您需要排除y2、查找cumsum和连接y2回来。

pd.concat([df[['y0', 'y1']].cumsum(axis=1),df['y2']], axis=1)
Run Code Online (Sandbox Code Playgroud)

输出:

    y0  y1  y2
0   2   5   4
1   2   4   3
2   0   0   0
3   1   3   3
Run Code Online (Sandbox Code Playgroud)