如何更改组中的原始 DataFrame?

blz*_*blz 4 python pandas pandas-groupby

假设我有以下数据框:

import pandas as pd

df = pd.DataFrame({'label': ['a', 'a', 'b', 'b', 'a', 'b', 'c', 'c', 'a', 'a'], 
                   'numbers': [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],
                   'arbitrarydata': [False] * 10})
Run Code Online (Sandbox Code Playgroud)

arbitrarydata我想根据其他列中的值为该列分配一个值。一个天真的方法如下:

for _, grp in df.groupby(('label', 'numbers')):
    grp.arbitrarydata = pd.np.random.rand()
Run Code Online (Sandbox Code Playgroud)

当然,这不会将更改传播回df. 有没有办法修改组以便更改反映在原始 DataFrame 中

Mat*_*ohn 6

尝试使用transform,例如:

df['arbitrarydata'] = df.groupby(('label', 'numbers')).transform(lambda x: np.random.rand())
Run Code Online (Sandbox Code Playgroud)