将函数应用于数据框的块

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


              A    B 

 0           2.0   3.0

 1           3.0   4.0

并生成了 20 个引导重新采样,这些重新采样现在都在相同的 df 中,但重新采样编号不同。


                                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 个样本重复代码。我的目标是找到一个识别重新采样编号的命令。自动计算每个重新采样编号的函数。


我怎样才能做到这一点?


www说
浏览 115回答 1
1回答

ITMISS

使用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         C0  1  0  2.0  3.0  0.7200001  1  1  3.0  4.0  0.7200002  2  1  3.0  4.0  0.7500003  2  1  3.0  4.0  0.75000039 20 0  2.0  3.0  0.66666740 20 0  2.0  3.0  0.666667
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python