Python 3.x 基于排序列值将数据帧划分为子集
我有一个dataframe,列如下Python 3.x 基于排序列值将数据帧划分为子集,python-3.x,pandas,data-science,Python 3.x,Pandas,Data Science,我有一个dataframe,列如下 [“事件发生时间”、“供应商技术”、“事件结束”] 我有按供应商字母顺序排列的数据框。我想拆分这个大数据帧。根据vendor\u tech 我尝试了许多解决方案,但在StackOverflow上似乎找不到类似的解决方案。我尝试过许多低效且复杂的解决方案,但都没有成功 我的主要问题是,当我使用.itertuple()并迭代对象时,我无法将这些对象添加到另一个数据帧中 # try this df time_of_incident vendo
[“事件发生时间”、“供应商技术”、“事件结束”]
我有按供应商字母顺序排列的数据框。我想拆分这个大数据帧。根据vendor\u tech
我尝试了许多解决方案,但在StackOverflow上似乎找不到类似的解决方案。我尝试过许多低效且复杂的解决方案,但都没有成功
我的主要问题是,当我使用.itertuple()
并迭代对象时,我无法将这些对象添加到另一个数据帧中
# try this
df
time_of_incident vendor_tech Incident_closed
0 1970-04-05 17:23:44.460 a yes
1 1994-11-25 17:23:44.460 a no
2 1980-02-12 17:23:44.460 a no
3 1978-06-22 17:23:44.460 b yes
4 1990-10-17 17:23:44.460 b yes
5 1960-05-27 17:23:44.460 b yes
6 1980-02-12 17:23:44.460 c no
按“供应商技术”对数据进行分组
创建数据帧字典
调用每个数据帧(根据“供应商技术”将其视为唯一)
如果需要,可以将每个df保存到不同的文件中
split={name:df表示名称,df在您的大数据框中。groupby(“供应商技术”)}
您能给数据框或文件提供一个小的工作示例吗?我想您可以创建一个列,将数据分类到任意多个存储桶中,而不是使用group by,即[group for name,group in df.groupby('column to split the df by')],然后运行一个循环到新数据帧的结果。@CJR工作得很好
mini_df = [(name,group) for name,group in df.groupby('vendor_tech')]
mini_list = list(df['vendor_tech'].unique())
mini_dict ={}
for i in range(len(mini_df)):
label = mini_list.pop(0)
mini_dict['df_'+str(label)] = pd.DataFrame(mini_df[i][1], columns=df.columns)
df_a
time_of_incident vendor_tech Incident_closed
0 1970-04-05 17:23:44.460 a yes
1 1994-11-25 17:23:44.460 a no
2 1980-02-12 17:23:44.460 a no
df_b
time_of_incident vendor_tech Incident_closed
3 1978-06-22 17:23:44.460 b yes
4 1990-10-17 17:23:44.460 b yes
5 1960-05-27 17:23:44.460 b yes