为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据条件从一个原始 df 创建多个 df,然后为它们分配单独的名称

如何根据条件从一个原始 df 创建多个 df,然后为它们分配单独的名称

Helenr 2022-10-05 16:43:29
df_collection = {} for country in country_names:    df_collection[country] = df.loc[df['CountryName'] == country].copy我想从一个原始df(每个国家的频率不同)中创建几个df(每个国家大约70个),然后为它们分配单独的名称(因此我使用了字典)。但我不能再访问个人 df 了。它们应该有不同的名称,并且应该保持一个数据框。错误:“方法”对象不可下标有没有人有办法解决吗?
查看完整描述

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


查看完整回答
反对 回复 2022-10-05
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号