如何从分组中更改原始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
。有没有办法修改一组数据使得更改能在原始数据表中体现出来?
1 个回答
6
试试使用 transform
,比如:
df['arbitrarydata'] = df.groupby(('label', 'numbers')).transform(lambda x: np.random.rand())