我有一個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
提交
取消