簡體   English   中英

pandas在列中累積減法

[英]pandas cumulative subtraction in a column

我有一個數據框,我需要從基線開始做一個燃盡並減去所有值,基本上我正在尋找與DataFrame()相反的.cumsum(0)

               In Use
Baseline       3705.0
February 2018     0.0
March 2018        2.0
April 2018       15.0
May 2018         30.0
June 2018        14.0
July 2018       797.0
August 2018    1393.0
September 2018   86.0
October 2018    374.0
November 2018    21.0
December 2018     0.0
January 2019      0.0
February 2019     0.0
March 2019        0.0
April 2019        2.0
unknown         971.0

我找不到要做的功能,或者我沒有找到正確的標簽/名稱。

怎么能實現這一目標?

使用DataFrameGroupBy.diff通過創建的組diff ,通過comapring lt <以及累加和:

g = df['Use'].diff().lt(0).cumsum()
df['new'] = df['Use'].groupby(g).diff().fillna(df['Use'])
print (df)
                In     Use     new
0         Baseline  3705.0  3705.0
1    February 2018     0.0     0.0
2       March 2018     2.0     2.0
3       April 2018    15.0    13.0
4         May 2018    30.0    15.0
5        June 2018    14.0    14.0
6        July 2018   797.0   783.0
7      August 2018  1393.0   596.0
8   September 2018    86.0    86.0
9     October 2018   374.0   288.0
10   November 2018    21.0    21.0
11   December 2018     0.0     0.0
12    January 2019     0.0     0.0
13   February 2019     0.0     0.0
14      March 2019     0.0     0.0
15      April 2019     2.0     2.0
16         unknown   971.0   969.0

您可以將pd.Series.difffillna pd.Series.diff使用。 這是一個演示:

df = pd.DataFrame({'A': np.random.randint(0, 10, 5)})

df['B'] = df['A'].cumsum()
df['C'] = df['B'].diff().fillna(df['B']).astype(int)

print(df)

   A   B  C
0  1   1  1
1  4   5  4
2  4   9  4
3  2  11  2
4  1  12  1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM