【发布时间】:2021-12-16 16:04:28
【问题描述】:
我有一个数据集,我正在尝试迭代每个组,并且基于每个组,我正在尝试更新原始组:
import pandas as pd
import numpy as np
arr = np.array([1, 2, 4, 7, 11, 16, 22, 29, 37, 46])
df = pd.DataFrame({'grain': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B', 'A', 'B']})
df["target"] = arr
for group_name, b in df.groupby("grain"):
if group_name == "A":
// do some processing
if group_name == "B":
// do another processing
我希望看到原始的df 被更新。有什么办法吗?
【问题讨论】:
-
groupby上的迭代器给出for group_name, grouped_df in df.groupby('grain'):你应该检查group_name == 'A'/group_name == 'B' -
我尝试更改 grouped_df 但它不会更改原始数据 df。我需要更改 df。
-
你能提供你想要的输出吗?不清楚为什么需要迭代。
-
是的,这是真的。它与原始 DataFrame 未连接。
df.loc[grouped_df.index, 'col'] = whatever怎么样? -
Idk,我觉得它有点不安全。我会创建任何新数据,然后分配回去。
标签: python pandas dataframe group-by