猿问

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

df_collection = {}
for country in country_names:
   df_collection[country] = df.loc[df['CountryName'] == country].copy

我想从一个原始df(每个国家的频率不同)中创建几个df(每个国家大约70个),然后为它们分配单独的名称(因此我使用了字典)。但我不能再访问个人 df 了。它们应该有不同的名称,并且应该保持一个数据框。错误:“方法”对象不可下标

有没有人有办法解决吗?



Helenr
浏览 89回答 1
1回答

吃鸡游戏

您为每个字典键分配了一个方法。您需要使用 调用 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     7df_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
随时随地看视频慕课网APP

相关分类

Python
我要回答