假设我有以下DataFrame:
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})
我想根据两个其他列中的值为arbitrarydata
列分配值。一种天真的方法如下:
for _, grp in df.groupby(('label', 'numbers')):
grp.arbitrarydata = pd.np.random.rand()
当然,这不会将更改传播回df
。有没有办法修改组,以便更改反映在原始DataFrame中?
答案 0 :(得分:2)
尝试使用transform
,例如:
df['arbitrarydata'] = df.groupby(('label', 'numbers')).transform(lambda x: np.random.rand())