Панды - Создать xlsx из dict & array - PullRequest
0 голосов
/ 04 сентября 2018

Предположим, у меня есть следующий массив:

x = [
{
    "id": "1",
    "array": ["2", "3", "4"]
 },
{
    "id": "2",
    "array": ["5"]
 },
{
    "id": "3",
    "array": ["6", "7", "8"]
}
]

Я пытаюсь создать электронную таблицу, используя панд, и у меня есть задача объединить содержимое массива, который живет внутри команды, также являющейся частью столбцов, как только массив будет создан динамически.

Текущий подход:

import pandas as pd

df = pd.DataFrame({'id': []})

for item in x:
    df = df.append(item, ignore_index=True)

df.to_excel('test.xlsx', 's')

Токовый выход:

    id  array
0   1   ['2', '3', '4']
1   2   ['5']
2   3   ['6', '7', '8']

Ожидаемый результат:

    id  array
0   1   2   3   4
1   2   5
2   3   6   7   8

Есть идеи?

Ответы [ 2 ]

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

вам не нужна петля

просто создайте df со списком словарей

 df=pd.DataFrame(x)
 #join the list elements with ' '
 df['array']=df['array'].str.join(' ')
0 голосов
/ 04 сентября 2018

Использование join

df.array=df.array.apply(' '.join)
df
Out[211]: 
  id  array
0  1  2 3 4
1  2      5
2  3  6 7 8

Обновление

pd.concat([df,pd.DataFrame(df.array.tolist())],1)
Out[249]: 
  id      array  0     1     2
0  1  [2, 3, 4]  2     3     4
1  2        [5]  5  None  None
2  3  [6, 7, 8]  6     7     8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...