1 回答

TA贡献1829条经验 获得超7个赞
您为每个字典键分配了一个方法。您需要使用 调用 copy (),即df.loc[df['CountryName'] == country].copy()。
但是,无需在循环中对 DataFrame 进行子集化。这正是groupby制作的目的,您可以简洁地创建字典
df_collection = dict(tuple(df.groupby('CountryName')))
这是因为__iter__groupby 对象的方法:“返回:生成器为每个组产生(名称,子集对象)序列”,因此使用单个分组键,这些值成为字典的键。
样本
print(df)
# CountryName Data
#0 a 8
#1 c 4
#2 b 4
#3 a 1
#4 a 1
#5 c 7
df_collection = dict(tuple(df.groupby('CountryName')))
## If you care for the subset defined in some list `country_names`, subset first
# df_collection = dict(tuple(df[df.CountryName.isin(country_names)].groupby('CountryName')))
df_collection['a']
# CountryName Data
#0 a 8
#3 a 1
#4 a 1
添加回答
举报