将没有标题的数据框转换为带有一行数字的字典
数据挖掘
Python
熊猫
2021-10-06 06:06:48
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]}
其它你可能感兴趣的问题
