根据Cloumn的唯一值创建多个数据框

时间:2020-10-07 15:11:59

标签: python pandas dataframe

我有带有列(issue_id,summary,source_id)的数据框。 source_id的值范围是1到3。 我想根据source_id中的值创建多个名为df_1,df_2,df_3的数据框。

我尝试了groupby,它给出了一个命令。但是将dict转换为数据框只会得到1个数据框。

data_dict = {'df'+ str(i):i的grp,df.groupby('Source_sys')中的grp pd.DataFrame.from_dict(data_dict,orient ='index')

输出: 0 df1问题... df2问题... df3问题...

2 个答案:

答案 0 :(得分:0)

简单的方法是删除其他列并分配不同的名称。 @krishna

答案 1 :(得分:0)

听起来您需要过滤source_id上的数据帧。例如,下面的代码将生成一个source_id等于1的数据帧:

df[df['source_id']==1]

如果要将其分配给新变量,可以执行以下操作:

df_1 = df[df['source_id']==1].copy()

请注意,由于要创建原始数据帧的切片,因此添加了.copy()。如果您希望以其他任何方式更改df_1,则在此处使用.copy()可以避免抛出SettingWithCopyWarning

编辑-考虑是否添加了新的'source_id'值

您可以构建数据帧的字典理解,并使用'source_id'的唯一值来做到这一点:

dfs = {f'df_{n}': df[df['source_id'] == n] for n in df['source_id'].unique()}

请注意,此处仅在3.6或更高版本中使用f字符串。如果您使用的是旧版本,则可以将f'df_{n}'替换为'df_{}'.format(n)

现在,如果您只想访问这些数据框中的任何一个,则可以使用字典的键:

dfs['df_1']
相关问题