Python .csv в словарь - PullRequest
       0

Python .csv в словарь

0 голосов
/ 24 сентября 2018

Я хочу преобразовать следующий 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])

Есть ли простой способ сделать это?Большое спасибо.

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Использование 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])}

Использование чистого питона:

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])}
0 голосов
/ 24 сентября 2018
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

Надеюсь, это поможет!

0 голосов
/ 24 сентября 2018

Вы можете прочитать в кадре данных 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...