如何将Python中DataFrame中的行转换为字典

Vic*_*cky 35 python dictionary pandas

例如,我现在有DataFrame

id score1   score2  score3  score4  score5
1  0.000000     0.108659    0.000000    0.078597    1
2  0.053238     0.308253    0.286353    0.446433    1
3  0.000000     0.083979    0.808983    0.233052    1
Run Code Online (Sandbox Code Playgroud)

我想将其转换为

id scoreDict
1  {'1': 0, '2': 0.1086, ...}
2  {...}
3  {...}
Run Code Online (Sandbox Code Playgroud)

无论如何要这样做?

提前致谢!

Jia*_* Li 70

import pandas as pd

# your df
# =========================
print(df)

   id  score1  score2  score3  score4  score5
0   1  0.0000  0.1087  0.0000  0.0786       1
1   2  0.0532  0.3083  0.2864  0.4464       1
2   3  0.0000  0.0840  0.8090  0.2331       1

# to_dict
# =========================
df.to_dict(orient='records')

Out[318]: 
[{'id': 1.0,
  'score1': 0.0,
  'score2': 0.10865899999999999,
  'score3': 0.0,
  'score4': 0.078597,
  'score5': 1.0},
 {'id': 2.0,
  'score1': 0.053238000000000001,
  'score2': 0.308253,
  'score3': 0.28635300000000002,
  'score4': 0.44643299999999997,
  'score5': 1.0},
 {'id': 3.0,
  'score1': 0.0,
  'score2': 0.083978999999999998,
  'score3': 0.80898300000000001,
  'score4': 0.23305200000000001,
  'score5': 1.0}]
Run Code Online (Sandbox Code Playgroud)

  • 值得为未来的读者补充的是, orient 参数根据您想要如何分割 DataFrame 而采用几个不同的值 - 有关此方法的 pandas 文档可以在 https://pandas.pydata.org/docs/reference/api/ 找到pandas.DataFrame.to_dict.html (6认同)

小智 10

df = pd.DataFrame({'col1': [1, 2],
                   'col2': [0.5, 0.75]},
                   index=['row1', 'row2'])
df
      col1  col2
row1    1   0.50
row2    2   0.75

df.to_dict(orient='index')
{'row1': {'col1': 1, 'col2': 0.5}, 'row2': {'col1': 2, 'col2': 0.75}}
Run Code Online (Sandbox Code Playgroud)


Ada*_*dav 5

对于像我这样的其他人,您遇到以下问题,但希望执行以下操作:逐行创建一个dict以根据相邻列的值映射一列。

这是我们的映射表:

  Rating    y
0  AAA      19
1  AA1      18
2  AA2      17
3  AA3      16
4  A1       15
5  A2       14
6  A3       13
      ...
19 D       0
Run Code Online (Sandbox Code Playgroud)

在:

import pandas as pd
df_map.set_index('y')
df_map.transpose()
dict_y = df_map['Rating'].to_dict()
Run Code Online (Sandbox Code Playgroud)

出:

{19: 'AAA',
 18: 'AA1',
 17: 'AA2',
 16: 'AA3',
 15: 'A1',
 14: 'A2',
 13: 'A3',
 12: 'BBB1',
 11: 'BBB2',
 10: 'BBB3',
 9: 'BB1',
 8: 'BB2',
 7: 'BB3',
 6: 'B1',
 5: 'B2',
 4: 'B3',
 3: 'CCC1',
 2: 'CCC2',
 1: 'D'}
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,这个解决方案无需调用“transpose”即可工作。当您转置时,您的“Rating”(列)变成(唯一)行,因此“df_map['Rating']”在我的(非常相似)df 中返回错误 (2认同)