首页 > 解决方案 > 如何根据列值在每组数据框中应用计算?

问题描述

我有以下数据框,显示每个交易日的 3 个不同期货价格,在“数字”列中编号。 在此处输入图像描述

现在我正在努力计算以下内容:

每个唯一交易日期,我想将“数字”= 2 的收盘列中的值除以“数字”= 1 的收盘列中的值。我该怎么做?非常感谢!

标签: pandas

解决方案


有可能在GroupBy.apply

df1 = (df.groupby('Datetime')
        .apply(lambda x: x.loc[x['number'].eq(2), 'Close'] / 
                         x.loc[x['number'].eq(1), 'Close']))
print (df1)
Datetime              
2013-01-02  2013-01-02    1.071795
2013-01-03  2013-01-03    1.064151
Name: Close, dtype: float64

另一个想法DataFrame.pivot

df1 = df.pivot('Datetime','number','Close')
df1['new'] = df1[2] / df1[1]

print (df)
number         1      2      3       new
Datetime                                
2013-01-02  15.6  16.72  18.06  1.071795
2013-01-03  15.9  16.92    NaN  1.064151

推荐阅读