Python 熊猫根据元组列表中的索引值分割数据帧
假设我有一个包含索引值的元组列表:Python 熊猫根据元组列表中的索引值分割数据帧,python,pandas,dataframe,for-loop,tuples,Python,Pandas,Dataframe,For Loop,Tuples,假设我有一个包含索引值的元组列表: mapper= [(0,6),(9,13),(17,27)] 我有一个大的master_df,我想根据上面列表中的元组索引值将其拆分为多个df 映射器[0][0]是起点,映射器[0][1]是终点。我有一个df名字的列表 df_list= ['df_1','df_2,'df_3'] 我尝试了下面的代码片段,尝试根据映射器中的索引值填充多个df for x in range(len(df_list)): df_list[x] = master_df
mapper= [(0,6),(9,13),(17,27)]
我有一个大的master_df,我想根据上面列表中的元组索引值将其拆分为多个df
映射器[0][0]是起点,映射器[0][1]是终点。我有一个df名字的列表
df_list= ['df_1','df_2,'df_3']
我尝试了下面的代码片段,尝试根据映射器中的索引值填充多个df
for x in range(len(df_list)):
df_list[x] = master_df[mapper[x][0]:mapper[x][1]]
但这并不是我想象的那样。对我来说,理想的解决方案是根据列表中的元组索引值对主函数进行三次单独的df拆分
以下是我试图实现的一个例子:
寻求结果
感谢您的帮助/指导 您可以使用
*
解压元组,并将其传递给范围函数,然后使用iloc[]
获取这些索引:
df_list=[df.iloc[range(*i),:] for i in mapper]
[ Name Role Location
0 Gina Assistance NY
1 Jake Officer Brooklyn
2 Boyle Detective 99,
Name Role Location
3 Scully Assistance NY
4 Diaz Officer Brooklyn
5 Hitchcock Detective 99,
Name Role Location
6 Amy Assistance NY
7 Terry Officer Brooklyn
8 Holt Detective 99
9 Judy Assistance NY
10 Adrian Officer Brooklyn]
如果你想把它们分配给名字,你必须把它编成字典(参见)
为数据帧编制索引时,应使用索引。您可以尝试
df_list=[master_df.loc(axis=0)[map[x][0]:map[x][1]]在mapper中绘制地图]
一些示例输入和输出将有助于使您的问题更加清晰,正如本文所述;It’这让人搞不清你到底想做什么。见:@G.Anderson谢谢你的建议。用一些示例输入和输出编辑了我的问题。
df_1:
Name Role Location
0 Gina Assistance NY
1 Jake Officer Brooklyn
2 Boyle Detective 99
df_2:
Name Role Location
3 Scully Assistance NY
4 Diaz Officer Brooklyn
5 Hitchcock Detective 99
df_3:
Name Role Location
6 Amy Assistance NY
7 Terry Officer Brooklyn
8 Holt Detective 99
9 Judy Assistance NY
10 Adrian Officer Brooklyn
df_list=[df.iloc[range(*i),:] for i in mapper]
[ Name Role Location
0 Gina Assistance NY
1 Jake Officer Brooklyn
2 Boyle Detective 99,
Name Role Location
3 Scully Assistance NY
4 Diaz Officer Brooklyn
5 Hitchcock Detective 99,
Name Role Location
6 Amy Assistance NY
7 Terry Officer Brooklyn
8 Holt Detective 99
9 Judy Assistance NY
10 Adrian Officer Brooklyn]
df_dict=dict(zip(df_list,[df.iloc[range(*i),:] for i in mapper]))
{'df_1': Name Role Location
0 Gina Assistance NY
1 Jake Officer Brooklyn
2 Boyle Detective 99,
'df_2': Name Role Location
3 Scully Assistance NY
4 Diaz Officer Brooklyn
5 Hitchcock Detective 99,
'df_3': Name Role Location
6 Amy Assistance NY
7 Terry Officer Brooklyn
8 Holt Detective 99
9 Judy Assistance NY
10 Adrian Officer Brooklyn}