我有一个这样的熊猫数据框:
<script> import Header from './components/layout/Header.vue' import Todos from './components/Todo.vue' export default { name: 'app', components: { Todos, Header, }, data () { return { todos : [] } }, methods : { created () { fetch('https://jsonplaceholder.typicode.com/todos') .then( resp => resp.json()) .then( data => { console.log(data); }) .catch(err => err) } } } </script>
我感兴趣的变量是尾号,飞行路线(元组)和数字(这是整数列)。
我想用它来制作一个嵌套字典,以尾号作为键,再做一个内部词典,其中键是飞行路线,值是数字。嵌套字典理想上应如下所示: 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
你能帮我吗?
答案 0 :(得分:1)
您可以像这样使用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()
答案 1 :(得分:1)
一种方法是使用groupby
和dict理解
{k: dict(zip(v['flight route'], v['digit'])) for k, v in df.groupby('Tail Number')}
Out[209]:
{'001C': {('VB', 'MI'): 1, ('CC', 'SK'): 2, ('KF', 'KC'): 1},
'004N': {('AZ', 'AL'): 2, ('AU', 'NY'): 3},
'005F': {('ALB', 'TPA'): 5, ('ORD', 'JAC'): 2}}