我要转换以下csv
E1;4;6;7;1;3;6
E2;5;4;3;5;0;0
E3;2;3;3;0;0;0
放入具有以下结构的Python字典中:
d = {"E1": np.array([4,6,7,1,3,6])}
d["E2"] = np.array([5,4,3,5,0,0])
有没有简单的方法可以做到这一点?非常感谢。
答案 0 :(得分:0)
您可以读入Pandas数据框,进行转置,然后使用字典理解:
from io import StringIO
x = StringIO("""E1;4;6;7;1;3;6
E2;5;4;3;5;0;0
E3;2;3;3;0;0;0""")
# replace x with 'file.csv'
df = pd.read_csv(x, sep=';', header=None).set_index(0).T
d = {col: df[col].values for col in df}
结果:
{'E1': array([4, 6, 7, 1, 3, 6], dtype=int64),
'E2': array([5, 4, 3, 5, 0, 0], dtype=int64),
'E3': array([2, 3, 3, 0, 0, 0], dtype=int64)}
如果list
值足够,则可以使用to_dict
:
d = pd.read_csv(x, sep=';', header=None).set_index(0).T.to_dict('list')
答案 1 :(得分:0)
使用pandas
>>> d = pd.read_csv('file.csv', sep=';', header=None).set_index(0).agg(np.array,1).to_dict()
{'E1': array([4, 6, 7, 1, 3, 6]),
'E2': array([5, 4, 3, 5, 0, 0]),
'E3': array([2, 3, 3, 0, 0, 0])}
使用纯python:
with open('file.csv', 'r') as f:
d = {}
for line in f:
l = line.strip().split(';')
d[l[0]] = np.array(list(map(int, l[1:])))
{'E1': array([4, 6, 7, 1, 3, 6]),
'E2': array([5, 4, 3, 5, 0, 0]),
'E3': array([2, 3, 3, 0, 0, 0])}
答案 2 :(得分:0)
df = pd.read_csv('input_file')
column_names = df.columns.tolist()
dict = {}
for col in column_names:
dict[column_names[col]] = column_names.col.values