为了账号安全,请及时绑定邮箱和手机立即绑定

将函数应用于数据框的块

将函数应用于数据框的块

www说 2023-06-27 13:26:47
我有一个Dataframe (df)(例如 - 简化版本)              A    B  0           2.0   3.0 1           3.0   4.0并生成了 20 个引导重新采样,这些重新采样现在都在相同的 df 中,但重新采样编号不同。                                A    B    0     1             0           2.0   3.01     1             1           3.0   4.02     2             1           3.0   4.03     2             1           3.0   4.0..    ....    .. 39    20            0           2.0    3.040    20            0           2.0    3.0现在我想在每个Reample Nr上应用某个函数。说:C = sum(df['A'] * df['B']) / sum(df['B'] ** 2)前景如下:                                 A    B           C0     1             0           2.0   3.0   Calculated Value X11     1             1           3.0   4.0   Calculated Value X12     2             1           3.0   4.0   Calculated Value X23     2             1           3.0   4.0   Calculated Value X2..    ....    .. 39    20            0           2.0    3.0  Calculated Value  X2040    20            0           2.0    3.0  Calculated Value  X20所以有 20 个不同的新值。我知道有一个 df.iloc 命令,我可以在其中指定行选择,df.iloc[row, column]但我想找到一个命令,无需为 20 个样本重复代码。我的目标是找到一个识别重新采样编号的命令。自动计算每个重新采样编号的函数。我怎样才能做到这一点?
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

使用DataFrame.assign创建两个新列x和 ,y对应于df['A'] * df['B']df['B']**2,然后使用DataFrame.groupbyon Resample Nr.(或level=1) 和transformusing sum

s = df.assign(x=df['A'].mul(df['B']), y=df['B']**2)\

      .groupby(level=1)[['x', 'y']].transform('sum')

df['C'] = s['x'].div(s['y'])

结果:


           A    B         C

0  1  0  2.0  3.0  0.720000

1  1  1  3.0  4.0  0.720000

2  2  1  3.0  4.0  0.750000

3  2  1  3.0  4.0  0.750000

39 20 0  2.0  3.0  0.666667

40 20 0  2.0  3.0  0.666667


查看完整回答
反对 回复 2023-06-27
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信