3

次の 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 に反映されるようにグループを変更する方法はありますか?

4

1 に答える 1

4

を使用してみてくださいtransform

df['arbitrarydata'] = df.groupby(('label', 'numbers')).transform(lambda x: np.random.rand())
于 2014-07-07T13:21:44.580 に答える