Как разделить большой элемент списка на разные элементы - PullRequest
1 голос
/ 02 мая 2020

У меня есть список элементов, но эти элементы должны быть разделены на несколько элементов с помощью -delimiter.

[[{'col1': '81627', 'picture_date': '2018-03-26'},
  {'col1': '82034', 'picture_date': '2018-03-28'},
  {'col1': '81625', 'picture_date': '2018-03-26'},
  {'col1': '81626', 'picture_date': '2018-03-26'}]]

Это один список элементов списка [1], но его следует разделить на 4 элемента списка. Какой эффективный способ сделать это?

Ответы [ 3 ]

1 голос
/ 02 мая 2020

Вы можете попытаться сгладить список:

df = pd.DataFrame([l for d in data for l in d])

вывод :

#     col1 picture_date
# 0  81627   2018-03-26
# 1  82034   2018-03-28
# 2  81625   2018-03-26
# 3  81626   2018-03-26

Редактировать

Чтобы выполнить некоторые вычисления с данными, вам нужно преобразовать столбец с соответствующим им типом . Вы можете увидеть types, используя dtypes

print(df.dtypes)
# col1            object
# picture_date    object
# dtype: object
  • Для преобразования данных в цифру c, решение заключается в использовании pd.to_numeric.
  • Для преобразования данных в объект времени необходимо использовать решение pd.to_datetime
df["col1"] = pd.to_numeric(df["col1"])
df["picture_date"] = pd.to_datetime(df["picture_date"])
print(df.dtypes)
# col1                     int64
# picture_date    datetime64[ns]
# dtype: object
0 голосов
/ 02 мая 2020

Я бы предложил, используя понимание списка (для тех из нас, кто пока не знает pandas):

your_list = [[
    {'col1': '81627', 'picture_date': '2018-03-26'},
    {'col1': '82034', 'picture_date': '2018-03-28'},
    {'col1': '81625', 'picture_date': '2018-03-26'},
    {'col1': '81626', 'picture_date': '2018-03-26'},
    ]]

what_you_want = [item for sub_list in your_list for item in sub_list]
print(what_you_want)

Вывод:

[{'col1': '81627', 'picture_date': '2018-03-26'}, {'col1': '82034', 'picture_date': '2018-03-28'}, {'col1': '81625', 'picture_date': '2018-03-26'}, {'col1': '81626', 'picture_date': '2018-03-26'}]
0 голосов
/ 02 мая 2020

Я думаю, что это будет работать для вас

>>> import pandas as pd
>>> alist= [[{'col1': '81627', 'picture_date': '2018-03-26'},
...   {'col1': '82034', 'picture_date': '2018-03-28'},
...   {'col1': '81625', 'picture_date': '2018-03-26'},
...   {'col1': '81626', 'picture_date': '2018-03-26'}]]
>>> df = pd.DataFrame(alist[0])
>>> df
    col1 picture_date
0  81627   2018-03-26
1  82034   2018-03-28
2  81625   2018-03-26
3  81626   2018-03-26
...