gpt4 book ai didi

python - 将函数应用于数据帧的 block

转载 作者:行者123 更新时间:2023-12-04 09:00:03 25 4
gpt4 key购买 nike

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

              A    B 
0 2.0 3.0
1 3.0 4.0
并生成了 20 个 bootstrap 重采样,它们现在都在同一个 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 个样本重复代码。
我的目标是找到一个识别 Resample Nr 的命令。自动计算每个 Resample Nr 的函数。
我怎样才能做到这一点?
谢谢!

最佳答案

使用 DataFrame.assign 创建两个新列 xy对应于 df['A'] * df['B']df['B']**2 ,然后使用 DataFrame.groupby 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'])
结果:
           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

关于python - 将函数应用于数据帧的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63598638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com