我只想將cumsum應用於1個特定列,因爲我在其他列中必須保持相同的其他值。僅適用於1列python的累積總和
這是我至今
df.groupby(by=['name','day']).sum().groupby(level=[0]).cumsum()
然而,在我所有的列的這個腳本會導致我的大熊貓DF將累積的腳本。必須累積的唯一一列是data
。
按照要求,這裏是一些樣本數據:
df = pd.DataFrame({'ID': ["880022443344556677787", "880022443344556677782", "880022443344556677787",
"880022443344556677782", "880022443344556677787", "880022443344556677782",
"880022443344556677781"],
'Month': ["201701", "201701", "201702", "201702", "201703", "201703", "201703"],
'Usage': [20, 40, 100, 50, 30, 30, 2000],
'Sec': [10, 15, 20, 1, 5, 6, 30]})
ID Month Sec Usage
0 880022443344556677787 201701 10 20
1 880022443344556677782 201701 15 40
2 880022443344556677787 201702 20 100
3 880022443344556677782 201702 1 50
4 880022443344556677787 201703 5 30
5 880022443344556677782 201703 6 30
6 880022443344556677781 201703 30 2000
所需的輸出
ID Month Sec Usage
0 880022443344556677787 201701 10 20
1 880022443344556677782 201701 15 40
2 880022443344556677787 201702 20 120
3 880022443344556677782 201702 1 90
4 880022443344556677787 201703 5 150
5 880022443344556677782 201703 6 120
6 880022443344556677781 201703 30 2000
是否可以使用cum sum數據添加附加列而不是替換它? –
不知道發生了什麼,但是當我將它應用到我的df時,您的第一種方法正在工作,但帶有附加列的cumsum的新方法以'NaN'值返回。你知道發生了什麼嗎? –
所以看起來你的真實數據有更多的列,所以需要改變'df1.reset_index(level = [2,3,4],drop = True)' - 每個級別的額外列。但我修改了另一個解決方案,給了我一個。 – jezrael