Python Pandas数据帧减去累积列

pot*_*lom 3 python date-range dataframe pandas

我有一些数据导入到Pandas数据帧中.此数据是"累积的"并在时间序列上编制索引,如下所示:

                        Raw data
2016-11-23 10:00:00     48.6 
2016-11-23 11:00:00     158.7 
2016-11-23 12:00:00     377.8 
2016-11-23 13:00:00     591.7 
2016-11-23 14:00:00     748.5 
2016-11-23 15:00:00     848.2 
Run Code Online (Sandbox Code Playgroud)

数据每天更新,因此时间序列将每天向前移动一天.

我需要做的是获取此数据帧并创建一个新列,如下所示.第一行只是复制"原始数据"列中的数据.然后每个后续行从"原始数据"列中获取数据,并减去它之前出现的值,例如158.7 - 48.6 = 110.1,377.8 - 158.7 = 219.1等.

有谁知道如何实现Python/Pandas中"过程数据"列中的内容?

                    Raw data    Processed data
23/11/2016 10:00    48.6        48.6
23/11/2016 11:00    158.7       110.1
23/11/2016 12:00    377.8       219.1
23/11/2016 13:00    591.7       213.9
23/11/2016 14:00    748.5       156.8
23/11/2016 15:00    848.2       99.7
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 8

您可以使用sub带有shifted列的减法:

最后填写NaN第一个值Raw data.

df['Processed data'] = df['Raw data'].sub(df['Raw data'].shift())
df['Processed data'].iloc[0] = df['Raw data'].iloc[0]
print (df)
                     Raw data  Processed data
2016-11-23 10:00:00      48.6            48.6
2016-11-23 11:00:00     158.7           110.1
2016-11-23 12:00:00     377.8           219.1
2016-11-23 13:00:00     591.7           213.9
2016-11-23 14:00:00     748.5           156.8
2016-11-23 15:00:00     848.2            99.7
Run Code Online (Sandbox Code Playgroud)


小智 5

我想你可以试试这个,我发现它很简单:将创建一个带有减去值的新列。

df['processed_data'] = df['Raw_data'].diff(1)
Run Code Online (Sandbox Code Playgroud)