如何从分组中更改原始DataFrame?

4 投票
1 回答
2771 浏览
提问于 2025-04-18 12:20

假设我有一个这样的数据表:

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())

撰写回答