PYTHON BEGUINNER: Как создать pandas dataframe из списка словарей python? - PullRequest
0 голосов
/ 16 мая 2019

Я ищу способ создать DataFrame для панд, а затем добавить его в файл Excel с помощью панд из списка словарей.

Первый словарь имеет 3 значения (целое число), а второй -одно значение, которое соответствует набору слов.Ключи для двух словарей одинаковы, но, чтобы убедиться, что в файле Excel нет ошибок, я предпочитаю, чтобы они были в DataFrame.блок и мне нужно решение


df = pd.read_csv(sys.argv[1], na_values=['no info', '.'], encoding='Cp1252', delimiter=';')
df1 = pd.DataFrame(d1).T.reset_index()
df1['value1_d2'] = ''
# iterate over the dict and add the lists of words in the new column
for k,v in d2.items():
    df1.at[int(k) - 1, 'value1_d2'] = v 
#print(df1)
df1.columns = ['id','value_1_Dict1','value_2_Dict1','value_3_Dict1',' value_2_Dict2']
cols = df1.columns.tolist()
cols = cols[-1:] + cols[:-1]
df1 = df1[cols]
print(df1)
df = pd.concat([df, df1], axis = 1)
df.to_excel('exit.xlsx')


У меня нет ошибки, но заполнение кадра данных начинается после реальных столбцов, как в примере, и у меня более 2000 строк

Ожидаетсявывод: я добавляю его в существующий файл:

  score  freq    **value1_d2                       id value1   value2 value3  **    
0  0.5     2     **['connaître', 'rien', 'trouver'] 1  45       89       96   **
1  0.8     5     ** ['trouver', 'être', 'emmerder'] 2  78956    5000    100000 **   
2  0.1     5     **['con', 'ri', 'trou', 'êt', 'emmer',] 3  0        809     65  **


При попытке добавить в файл Excel у меня появляется следующая ошибка, я хочу начать запись с первого столбца, чтобы ключ был таким же.

enter image description here

Есть ли способ решить эту проблему с помощью панд (я должен использовать панд для этого семинара.

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 мая 2019

При чтении словаря в кадре данных вы можете использовать:

>>> d1 = {'1': ['45', '89', '96'], '2': ['78956', '50000', '100000'], '3': ['0', '809', '656']}
>>> df1 = pd.DataFrame.from_dict(d1)
1 голос
/ 19 мая 2019

Таким образом, вы можете добавить списки слов в ячейку:

df1 = pd.DataFrame(d1)

# the new column needs to have dtype object
df1['value1_d2'] = ''

# iterate over the dict and add the lists of words in the new column
for k,v in d2.items():
    df1.at[int(k) - 1, 'value1_d2'] = v

Я использовал информацию в этом посте .

...