鉴于此DataFrame
:
import pandas as pd
first=[0,1,2,3,4]
second=[10.2,5.7,7.4,17.1,86.11]
third=['a','b','c','d','e']
fourth=['z','zz','zzz','zzzz','zzzzz']
df=pd.DataFrame({'first':first,'second':second,'third':third,'fourth':fourth})
df=df[['first','second','third','fourth']]
first second third fourth
0 0 10.20 a z
1 1 5.70 b zz
2 2 7.40 c zzz
3 3 17.10 d zzzz
4 4 86.11 e zzzzz
我可以使用df
创建字典
a=df.set_index('first')['second'].to_dict()
所以我可以决定什么是keys
,什么是values
。但是如果你想让values
成为列的列表,比如second
和third
,该怎么办?
如果我试试这个
b=df.set_index('first')[['second','third']].to_dict()
我有一本奇怪的字典
{'second': {0: 10.199999999999999,
1: 5.7000000000000002,
2: 7.4000000000000004,
3: 17.100000000000001,
4: 86.109999999999999},
'third': {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'}}
相反,我想要一本列表字典
{0: [10.199999999999999,a],
1: [5.7000000000000002,b],
2: [7.4000000000000004,c],
3: [17.100000000000001,d],
4: [86.109999999999999,e]}
如何处理?
您可以
zip
这些值:其他人可能会附和一个纯熊猫解决方案,但在紧要关头,我认为这应该为你工作。您基本上可以动态创建字典,而是为每行中的值编制索引。
编辑:您也可以这样做:
在这种方法中,首先创建列表(或元组),保留其他列,然后“删除”其他列。这基本上是你最初的方法,修改过的。
如果你真的想要列表而不是元组,那么只要
map
在该'new'
列上输入list
:您可以通过^{} 创建
numpy array
,通过zip
列创建first
,并转换为dict
:相关问题 更多 >
编程相关推荐