我有一个四列的数据框架。我想把这个DataFrame转换成一个python字典。我希望第一列的元素是键,而同一行中其他列的元素是值。

DataFrame:

    ID   A   B   C
0   p    1   3   2
1   q    4   3   2
2   r    4   0   9  

输出应该是这样的:

字典:

{'p': [1,3,2], 'q': [4,3,2], 'r': [4,0,9]}

当前回答

DataFrame.to_dict()将DataFrame转换为字典。

例子

>>> df = pd.DataFrame(
    {'col1': [1, 2], 'col2': [0.5, 0.75]}, index=['a', 'b'])
>>> df
   col1  col2
a     1   0.1
b     2   0.2
>>> df.to_dict()
{'col1': {'a': 1, 'b': 2}, 'col2': {'a': 0.5, 'b': 0.75}}

详见本文档

其他回答

df = pd.DataFrame([['p',1,3,2], ['q',4,3,2], ['r',4,0,9]], columns=['ID','A','B','C'])
my_dict = {k:list(v) for k,v in zip(df['ID'], df.drop(columns='ID').values)}
print(my_dict)

与输出

{'p': [1, 3, 2], 'q': [4, 3, 2], 'r': [4, 0, 9]}

DataFrame.to_dict()将DataFrame转换为字典。

例子

>>> df = pd.DataFrame(
    {'col1': [1, 2], 'col2': [0.5, 0.75]}, index=['a', 'b'])
>>> df
   col1  col2
a     1   0.1
b     2   0.2
>>> df.to_dict()
{'col1': {'a': 1, 'b': 2}, 'col2': {'a': 0.5, 'b': 0.75}}

详见本文档

也可以使用字典理解和iterrows()方法来获得所需的输出。

result = {row.ID: [row.A, row.B, row.C] for (index, row) in df.iterrows()}

一本字典应该是:

{'red': '0.500', 'yellow': '0.250', 'blue': '0.125'}

被要求出一个数据框架,像这样:

        a      b
0     red  0.500
1  yellow  0.250
2    blue  0.125

最简单的方法是:

dict(df.values)

工作代码片段如下:

import pandas as pd
df = pd.DataFrame({'a': ['red', 'yellow', 'blue'], 'b': [0.5, 0.25, 0.125]})
dict(df.values)

如果你不介意字典值是元组,你可以使用itertuples:

>>> {x[0]: x[1:] for x in df.itertuples(index=False)}
{'p': (1, 3, 2), 'q': (4, 3, 2), 'r': (4, 0, 9)}