python - 分组熊猫数据框中的嵌套字典
问题描述
我有一个像这样的熊猫数据框:
Tail Number | flight route | digit _______________ 001C | (VB, MI) | 1 | (CC, SK) | 2 | (KF, KC) | 1 004N | (AZ, AL) | 2 | (AU, NY) | 3 005F | (ALB, TPA) | 5 | (ORD, JAC) | 2
我感兴趣的变量是尾号、飞行路线(一个元组)和数字(这是一个整数值列)。
我想用它制作一个嵌套字典,将尾号作为键,另一个内部字典的键是航线,值是数字。理想情况下,嵌套字典应如下所示:
d = {001C :{ {(VB, MI): 1}, {(CC, SK): 2}, {(KF, KC):1} },
004N :{ {(AZ, AL): 2}, {(AU, NY):3},
005F :{ {(ALB, TPA):5}, {(ORD, JAC):2}, ... }
你可以帮帮我吗?
解决方案
您可以使用这样的 dict 理解:
d = {i: {j:df.loc[(df['Tail Number']==i)&
(df['flight route']==j),'digit'].iloc[0] #take every digit
for j in df.loc[df['Tail Number']==i,'flight route']} #for every flight route
for i in df['Tail Number']} #in each Tail Number
两个dict理解,像for
循环一样,迭代1)尾号和2)飞行路线(在每个尾号内)。
Out[8]:
{'001C': {('VB', 'MI'): 1, ('CC', 'SK'): 2, ('KF', 'CC'): 1},
'004N': {('AZ', 'AL'): 2, ('AU', 'NY'): 3},
'005F': {('ALB', 'TPA'): 5, ('ORD', 'JAC'): 2}}
如果你有一个多索引,你可能需要先做
df = df.reset_index()
推荐阅读
- c - 错误:(1089) 对“_forward_flight”XC8 编译器的递归函数调用
- c - bfSize 问题(Pset3、任务调整大小、CS50)
- lambda - 闭包作为 C++ 中的参数和返回类型
- css - 在 Firefox 上,CSS 网格右侧的 HTML 输入溢出
- c - 为什么返回指向本地已声明变量的指针为空而不是指向堆栈中位置的指针?
- xcode - 为什么在 MacOS Catalina 升级后启动 iOS Xcode 模拟器会创建 Crash Report,如何处理?
- asp.net-core-mvc - 查看 .Net Core 3.1 中无法识别的组件标签助手
- python - KivyMD:从屏幕类访问标签 ID
- matlab - 如何使用 geoplot 更改绘图中的线条颜色?
- php - 只显示未来的约会 PHP