微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将函数应用于数据框的块

如何解决将函数应用于数据框的块

我有一个Dataframe (df)(例如-简化版)

              A    B 
 0           2.0   3.0
 1           3.0   4.0

生成了20个引导程序重采样,这些重采样现在都在同一df中,但在 Resample Nr中有所不同。

                                A    B 
   
0     1             0           2.0   3.0
1     1             1           3.0   4.0
2     2             1           3.0   4.0
3     2             1           3.0   4.0
..    ..
..    .. 
39    20            0           2.0    3.0
40    20            0           2.0    3.0

现在,我想在每个 Reample Nr 上应用特定功能。说:

C = sum(df['A'] * df['B']) / sum(df['B'] ** 2)

前景将如下所示:

                                 A    B           C
0     1             0           2.0   3.0   Calculated Value X1
1     1             1           3.0   4.0   Calculated Value X1
2     2             1           3.0   4.0   Calculated Value X2
3     2             1           3.0   4.0   Calculated Value X2
..    ..
..    .. 
39    20            0           2.0    3.0  Calculated Value  X20
40    20            0           2.0    3.0  Calculated Value  X20

所以有20个不同的新值。

我知道有一个df.iloc命令,可以在其中指定行选择df.iloc[row,column],但是我想找到一个命令,无需重复20个示例的代码。 我的目标是找到一个自动识别 Resample Nr。的命令,然后为每个 Resample Nr。

计算功能

我该怎么做?

谢谢!

解决方法

使用DataFrame.assign创建两个与xy对应的新列df['A'] * df['B']df['B']**2,然后在{{ 1}}(或Resample Nr.)和level=1使用transform

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'])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。