在Python中多次拆分数据帧的有效方法?

在Python中多次拆分数据帧的有效方法?,python,pandas,dataframe,Python,Pandas,Dataframe,我目前有一个pandasDataFramedf,大小为168078行×43列。df的摘要如下所示: doi gender order year ... count 9384155 10.1103/PRL.102.039801 male 1 2009 ... 1 ... 3679211

我目前有一个
pandas
DataFrame
df
,大小为168078行×43列。
df
的摘要如下所示:

              doi                           gender       order       year       ...       count
9384155       10.1103/PRL.102.039801        male         1           2009       ...       1
...
3679211       10.1103/PRD.69.024009         male         2           2004       ...       501
df
当前按
count
排序,因此从1到501不等

我想通过按计数将
df
拆分为501个较小的子数据。换句话说,在过程结束时,我将有501个不同的子
df
,每个特征
count

由于生成的(期望的)数据帧的数量相当高,而且是定量数据,我想知道:

a) 可以多次拆分数据帧(如果是,那么如何拆分),以及


b) 可以对每个数据帧进行定量命名,而无需手动分配501次名称;i、 例如,
df
count==1
将是
df.1
,而无需分配它。

您可以做的最佳实践是创建数据帧字典。下面我向您展示一个示例:

df=pd.DataFrame({'A':[4,5,6,7,7,5,4,5,6,7],
                 'count':[1,2,3,4,5,6,7,8,9,10],
                 'C':['a','b','c','d','e','f','g','h','i','j']})
print(df)

   A  count  C
0  4      1  a
1  5      2  b
2  6      3  c
3  7      4  d
4  7      5  e
5  5      6  f
6  4      7  g
7  5      8  h
8  6      9  i
9  7     10  j

现在我们创建字典。如您所见,键是每行中count的值。 请记住,此处用于在有两行具有相同计数值的情况下,在同一字典中创建它们

dfs={key:df[df['count']==key] for key in df['count'].unique()}

下面我将展示创建的整个词典的内容以及如何访问它:

for key in dfs:
    print(f'dfs[{key}]')
    print(dfs[key])
    print('-'*50)


dfs[1]
   A  count  C
0  4      1  a
--------------------------------------------------
dfs[2]
   A  count  C
1  5      2  b
--------------------------------------------------
dfs[3]
   A  count  C
2  6      3  c
--------------------------------------------------
dfs[4]
   A  count  C
3  7      4  d
--------------------------------------------------
dfs[5]
   A  count  C
4  7      5  e
--------------------------------------------------
dfs[6]
   A  count  C
5  5      6  f
--------------------------------------------------
dfs[7]
   A  count  C
6  4      7  g
--------------------------------------------------
dfs[8]
   A  count  C
7  5      8  h
--------------------------------------------------
dfs[9]
   A  count  C
8  6      9  i
--------------------------------------------------
dfs[10]
   A  count  C
9  7     10  j
--------------------------------------------------

您可以做的最佳实践是创建数据帧字典。下面我向您展示一个示例:

df=pd.DataFrame({'A':[4,5,6,7,7,5,4,5,6,7],
                 'count':[1,2,3,4,5,6,7,8,9,10],
                 'C':['a','b','c','d','e','f','g','h','i','j']})
print(df)

   A  count  C
0  4      1  a
1  5      2  b
2  6      3  c
3  7      4  d
4  7      5  e
5  5      6  f
6  4      7  g
7  5      8  h
8  6      9  i
9  7     10  j

现在我们创建字典。如您所见,键是每行中count的值。 请记住,此处用于在有两行具有相同计数值的情况下,在同一字典中创建它们

dfs={key:df[df['count']==key] for key in df['count'].unique()}

下面我将展示创建的整个词典的内容以及如何访问它:

for key in dfs:
    print(f'dfs[{key}]')
    print(dfs[key])
    print('-'*50)


dfs[1]
   A  count  C
0  4      1  a
--------------------------------------------------
dfs[2]
   A  count  C
1  5      2  b
--------------------------------------------------
dfs[3]
   A  count  C
2  6      3  c
--------------------------------------------------
dfs[4]
   A  count  C
3  7      4  d
--------------------------------------------------
dfs[5]
   A  count  C
4  7      5  e
--------------------------------------------------
dfs[6]
   A  count  C
5  5      6  f
--------------------------------------------------
dfs[7]
   A  count  C
6  4      7  g
--------------------------------------------------
dfs[8]
   A  count  C
7  5      8  h
--------------------------------------------------
dfs[9]
   A  count  C
8  6      9  i
--------------------------------------------------
dfs[10]
   A  count  C
9  7     10  j
--------------------------------------------------

您可以使用groupby获得如下结果 在这里
g.groups
:将为每个组提供组名(组id)
g.get_group
:将为您提供一个具有给定组名的组

将numpy导入为np
作为pd进口熊猫
df=pd.DataFrame({'A':np.random.choice([“A”、“b”、“c”、“d”]),10),
“计数”:np.随机选择(10,10)
})
g=df.groupby(“计数”)
对于g组中的键:
打印(g.get_组(键))
打印(“\n------------------”)
结果

   A  count
3  c      0

---------------
   A  count
9  a      2

---------------
   A  count
0  c      3
2  b      3

---------------
   A  count
1  b      4
5  d      4
6  a      4
7  b      4

---------------
   A  count
8  c      5

---------------
   A  count
4  d      8

---------------

您可以使用groupby获得如下结果 在这里
g.groups
:将为每个组提供组名(组id)
g.get_group
:将为您提供一个具有给定组名的组

将numpy导入为np
作为pd进口熊猫
df=pd.DataFrame({'A':np.random.choice([“A”、“b”、“c”、“d”]),10),
“计数”:np.随机选择(10,10)
})
g=df.groupby(“计数”)
对于g组中的键:
打印(g.get_组(键))
打印(“\n------------------”)
结果

   A  count
3  c      0

---------------
   A  count
9  a      2

---------------
   A  count
0  c      3
2  b      3

---------------
   A  count
1  b      4
5  d      4
6  a      4
7  b      4

---------------
   A  count
8  c      5

---------------
   A  count
4  d      8

---------------