很抱歉,这似乎很简单,但一直在努力寻找答案。
每行都可以通过在“ trip_id”,“ direction_id”,“ stop_sequence”列中建立的多索引来唯一标识。
我想请求使用循环的方法来创建数据帧的python-字典,其中每个数据帧是大型数据帧的子集,其中包含每个“ trip_id” +“ direction_id”多索引的所有行。
在循环结束时,我希望能够拥有一个数据帧的python-字典,在这里我可以使用简单的索引键(例如0-10,000)访问每个字典,或者该键是trip_id和direction_id的组合
例如对于上面的图像,我希望trip_id为“ 17067064.T0.2-EPP-F-mjp-1.8.R”和方向ID为“ 1”的所有行都在此字典集合的一个数据帧中。
谢谢您的帮助。
亲切的问候,
本
答案 0 :(得分:0)
将groupby
与dictionary comprehension
一起使用:
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,5,5,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
}).set_index(['F','B','C'])
print (df)
A D E
F B C
a 4 7 a 1 5
5 8 b 3 3
9 c 5 6
b 5 4 d 7 9
2 e 1 2
4 3 f 0 4
A D E
#python 3.6+
dfs = {f'{a}_{b}':v for (a, b), v in df.groupby(level=['F','B'])}
#python bellow
#dfs = {'{}_{}'.format(a,b):v for (a, b), v in df.groupby(level=['F','B'])}
print (dfs)
{'a_4': A D E
F B C
a 4 7 a 1 5, 'a_5': A D E
F B C
a 5 8 b 3 3
9 c 5 6, 'b_4': A D E
F B C
b 4 3 f 0 4, 'b_5': A D E
F B C
b 5 4 d 7 9
2 e 1 2}
print (dfs['a_4'])
A D E
F B C
a 4 7 a 1 5