我有一个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.groupby
on Resample Nr.
(或level=1
) 和transform
using 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
添加回答
举报
0/150
提交
取消