将没有标题的数据框转换为带有一行数字的字典

数据挖掘 Python 熊猫
2021-10-06 06:06:48

我正在尝试将数据框放入字典中,以第一列作为键,一行中的数字将是值。我该怎么做?我试过 to_dict 但没有用,我的 df 没有标题或行号。

在此处输入图像描述

3个回答

以数字为标题对我有用:

import pandas as pd
df = pd.DataFrame({'1': [1, 2],
                 '2': [0.5, 0.75]},
                 index=['row1', 'row2'])
df.to_dict()

输出:

{'1': {'row1': 1, 'row2': 2}, '2': {'row1': 0.5, 'row2': 0.75}}

您还可以在读取数据时指定列名:

Cov = pd.read_csv("path/to/file.txt", 
                  sep='\t', 
                  names=["Sequence", "Start", "End", "Coverage"])

请参阅:https ://stackoverflow.com/questions/34091877/how-to-add-header-row-to-a-pandas-dataframe

一种解决方案是使用字典理解 (IIUC)。

import pandas as pd

df = pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})
print (df)

    a  b  c
0  1  4  7
1  2  5  8
2  3  6  9

d = {k:v for k, v in df.apply(lambda r: {r[0],",".join(r[1:].astype('str'))}, axis=1)}
print(d)

{1: '4,7', 2: '5,8', 3: '6,9'}

如果我正确理解问题,第一列应该是键,而后面的数字是值。那么,这些值应该是列表吧?

试试这个代码。

import pandas as pd

df = pd.DataFrame(
    [
        ['C', 5, 4, 3, 2, 1],
        ['c', 6, 7, 8, 9, 10],
        ['(', 11, 12, 13, 14, 15],
        [')', 16, 17, 18, 19, 20],
        ['O', 21, 22, 23, 24, 25]
    ]
)

print(df)
print('\n')

print({df.iloc[i][0]: df.iloc[i][1:].tolist() for i in df.T})

这是输出:

   0   1   2   3   4   5
0  C   5   4   3   2   1
1  c   6   7   8   9  10
2  (  11  12  13  14  15
3  )  16  17  18  19  20
4  O  21  22  23  24  25


{'C': [5, 4, 3, 2, 1], 'c': [6, 7, 8, 9, 10], '(': [11, 12, 13, 14, 15], ')': [16, 17, 18, 19, 20], 'O': [21, 22, 23, 24, 25]}