pandas - 如何根据列值在每组数据框中应用计算?
问题描述
我有以下数据框,显示每个交易日的 3 个不同期货价格,在“数字”列中编号。
现在我正在努力计算以下内容:
每个唯一交易日期,我想将“数字”= 2 的收盘列中的值除以“数字”= 1 的收盘列中的值。我该怎么做?非常感谢!
解决方案
有可能在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
推荐阅读
- android - ViewModel 中的 LiveData SwitchMap 只在第一次返回数据
- visual-studio - 无法在 Visual Studio 2019 中通过 vsmsbuild 打开 .mpproj 文件
- android - 无法为 ctl.interface_start ctl.interface_start 'android.hardware.configstore@1.0::ISurfaceFlingerConfigs/default'
- reactjs - 如何在下拉列表(功能组件)中映射 json 数据?
- java - JsonBigDecimalNumber 与 javax json JsonString 不兼容
- jquery - jquery 函数在单击事件中无法正常工作
- c - 为什么我的 CUDA 内核似乎什么都不做?
- python - libgssapi_krb5.so.2:无法打开共享对象文件:没有这样的文件或目录
- python - 文件路径和文件名中的“Ü”等德语特殊字符 - 无法将路径用作字符串
- scala - 为什么 scala Try-match 匹配 Throwable 为成功