添加由于大熊猫中连续行的差异而导致的列

假设我有一个这样的数据框架

    A   B
0   a   b
1   c   d
2   e   f
3   g   h

0,1,2,3是乘以,a,c,e,g 是一个时间序列,b,d,f,h 是另一个时间序列。 我需要能够添加两个列的原始数据框架,这是通过计算某些列的连续行的差异得到的。

所以我需要这样的东西

    A   B   dA
0   a   b  (a-c)
1   c   d  (c-e)
2   e   f  (e-g)
3   g   h   Nan

我在数据框架/系列中看到了一个叫做 diff 的东西,但是它和第一个元素中的 Nan 稍有不同。

87088 次浏览

使用 换班

df['dA'] = df['A'] - df['A'].shift(-1)

您可以使用 diff并传递 -1作为 periods参数:

>>> df = pd.DataFrame({"A": [9, 4, 2, 1], "B": [12, 7, 5, 4]})
>>> df["dA"] = df["A"].diff(-1)
>>> df
A   B  dA
0  9  12   5
1  4   7   2
2  2   5   1
3  1   4 NaN


[4 rows x 3 columns]

在 CSV 中使用数据时,这种方法可以很好地工作:

my_data = pd.read_csv('sale_data.csv')
df = pd.DataFrame(my_data)
df['New_column'] = df['target_column'].diff(1)
print(df) #for the console but not necessary

滚动差异也可以这样计算:

df=pd.DataFrame(my_data)
my_data = pd.read_csv('sales_data.csv')
i=0
j=1
while j < len(df['Target_column']):
j=df['Target_column'][i+1] - df['Target_column'][i] #the difference btwn two values in a column.
i+=1 #move to the next value in the column.
j+=1 #next value in the new column.
print(j)