簡體   English   中英

連續數據列與第一值之差的熊貓數據幀比率

[英]Pandas dataframe ratio of difference of consecutive columns to first value

假設我有DataFrame(稱為df

'name'    'order'    'quantity'
'A'       1           10
'A'       2           15
'A'       3           5
'B'       1           2
'B'       2           6

我想要的是建立另一個包含一列的數據框,該列的連續列之差(按列order連續)與第一個值的比率。

我很容易就能檢索出上述比率的差異(分子)為

def compute_diff(x):

    quantity_diff = x.quantity.diff()

    return quantity_diff

diff_df = df.sort_values('order').groupby('name').apply(compute_diff).reset_index(name='diff')

這給我

'name'    'level_1'    'quantity'
'A'       0           NaN
'A'       1           5
'A'       1           -10
'B'       1           NaN
'B'       2           4

現在,按照說明,我要使用比率。 具體來說,我想

'name'    'level_1'    'quantity'
'A'       1           NaN
'A'       2           0.5
'A'       3           -0.6666
'B'       1           NaN
'B'       2           2

如何?

執行groupby ,使用pct_change

# Sort the DataFrame, if necessary.
df = df.sort_values(['name', 'order'])

# Use groupby and pcnt_change on the 'quantity' column.
df['quantity'] = df.groupby('name')['quantity'].pct_change()

結果輸出:

  name  order  quantity
0    A      1       NaN
1    A      2  0.500000
2    A      3 -0.666667
3    B      1       NaN
4    B      2  2.000000

您可以將結果除以df中移動的“數量”列:

diff_df.quantity = diff_df.quantity / df.quantity.shift(1)

暫無
暫無

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

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