簡體   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