繁体   English   中英

从 dataframe 创建字典,列作为值 python

[英]Creating dictionary from dataframe with columns as values python

我正在尝试从 dataframe 创建字典。

from pandas import util
df= util.testing.makeDataFrame()
df.index.name = 'name'

        A   B   C   D
name                
qSfQX3rj48  0.184091    -1.195861   0.998988    -0.970523
KSYYLUGiJB  -0.998997   -0.387378   -0.303704   0.833731
PmsVVmRbQX  -1.510940   -1.062814   0.934954    0.970467
oHjAqjAv1P  -1.366054   0.595680    -1.039310   -0.126625
a1cU5c4psT  -0.486282   -0.369012   -0.284495   -1.263010
qnqmltdFGR  -0.041243   -0.792538   0.234809    0.894919


df.to_dict() 


{'A': {'qSfQX3rj48': 0.1840905950693832,
  'KSYYLUGiJB': -0.9989969426889559,
  'PmsVVmRbQX': -1.5109402125881068,
  'oHjAqjAv1P': -1.3660539127241154,
  'a1cU5c4psT': -0.48628192605203563,
  'qnqmltdFGR': -0.04124312561281138,

上面的 dict 方法使用列名作为键。

dict_keys(['A', 'B', 'C', 'D'])

我怎样才能将它设置为一个字典,其中AB C D列是名称列的值。 因此它将只有 1 个密钥。

    A   B   C   D
name                
qSfQX3rj48  0.184091    -1.195861   0.998988    -0.970523

应该生成一个包含值列表的字典。

 {'qSfQX3rj48': [0.184091, -1.195861, 0.998988, -0.970523],
 'KSYYLUGiJB': [-0.998997, -0.387378 , -0.303704, 0.833731],

并且值是列,因此:

{'name': [A, B, C, D],
d = df.T.to_dict('list')
d[df.index.name] = df.columns.tolist()

例子

df = pd.DataFrame(np.arange(12).reshape(3, 4), 
                  columns=['A', 'B', 'C', 'D'],
                  index=['one', 'two', 'three'])
df.index.name = 'name'

df

       A  B   C   D
name               
one    0  1   2   3
two    4  5   6   7
three  8  9  10  11

d

{'one': [0, 1, 2, 3],
 'two': [4, 5, 6, 7],
 'three': [8, 9, 10, 11],
 'name': ['A', 'B', 'C', 'D']}

代码:

dict([(nm,[a,b,c,d ]) for nm, a,b,c,d in zip(df.index, df.A, df.B, df.C, df.D)])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM