【发布时间】:2021-11-09 12:16:48
【问题描述】:
我在 Python 中有 Pandas 数据框,如下所示:
IDX | ALL | COL1 | COL2
------------------------
ABC | 100 | 50 | 214
DEF | 250 | 32 | 89
GHI | 120 | 18 | 12
IDX 是这个数据帧的索引。 我想在这个数据框中添加新行,它将计算数学公式,如:
(value from index DEF - value from index GHI) and result / by value from index DEF
例如:(250 - 120) / 250 = 0.52 所以我需要类似下面的东西:
IDX | ALL | COL1 | COL2
------------------------
ABC | 100 | 50 | 214
DEF | 250 | 32 | 89
GHI | 120 | 18 | 12
new1 | 0.52| 0.44 | 0.87
因为:
(250 - 120) / 250 = 0.52
(32 - 18) / 32 = 0.44
(89 - 12) / 89 = 0.87
我使用如下代码:
df.loc['new1'] = df.lfoc['DEF'].sub(df.floc['GHI']).div(df.loc['DEF'])
尽管如此,在使用上述代码(有效)后,我的 DF 中的值从 int 更改为 float,如下所示:
IDX | ALL | COL1 | COL2
------------------------
ABC | 100.00000 | 50.00000 | 214.00000
DEF | 250.00000 | 32.00000 | 89.00000
GHI | 120.00000 | 18.00000 | 12.00000
new1 | 0.52000 | 0.43750 | 0.86516
我能做些什么来实现如下的 DF???:
IDX | ALL | COL1 | COL2
------------------------
ABC | 100 | 50 | 214
DEF | 250 | 32 | 89
GHI | 120 | 18 | 12
new1 | 52.0| 43.7 | 86.5
【问题讨论】:
标签: python pandas dataframe indexing