使用特定值将数据帧分离为多个数据帧



我有以下dataframe

df = pd.DataFrame({'season': ['0', '0', '1', '1', '2'],
'fruits': ['orange', 'mango', 'apple', 'grapes', 'NaN'],
'price': ['40', '80', 'NaN', '40', '30']
})
season fruits  price
0    0    orange  40
1    0    mango   80
2    1    apple   NaN
3    1    grapes  40
4    2    NaN     30

我想按季节列进行分组,并生成三个不同的dataframes

预期结果:

df1:
season fruits  price
0    0    orange  40
1    0    mango   80
df2:
season fruits  price
2    1    apple   NaN
3    1    grapes  40
df3:
season fruits  price
4    2    NaN     30

我正在使用df[df['season']==0],但我认为它太静态

有什么想法吗?

您可以使用groupby和字典理解:

dfs = {f'df{int(k)+1}': g for k,g in df.groupby('season')}

输出:

{'df1':   season  fruits price
0      0  orange    40
1      0   mango    80,
'df2':   season  fruits price
2      1   apple   NaN
3      1  grapes    40,
'df3':   season fruits price
4      2    NaN    30}

访问:

dfs['df1']
#   season  fruits price
# 0      0  orange    40
# 1      0   mango    80

或者,也许更好,如列表所示:

dfs = [g for _,g in df.groupby('season')]
dfs[0]
#   season  fruits price
# 0      0  orange    40
# 1      0   mango    80

最新更新