如何在不同的项目中拆分大列表项目

How to split big list item in different items

我有一个元素列表,但这些元素应该由 ,-分隔符分隔成更多元素。

[[{'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 个列表项。这样做的有效方法是什么?

我认为这对你有用

>>> 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

您可以尝试将列表展平:

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

编辑

为了能够对数据执行一些计算,您需要将列转换为适当的类型。您可以使用 dtypes

查看 types
print(df.dtypes)
# col1            object
# picture_date    object
# dtype: object
  • 要将数据转换为数字,一个解决方案是使用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

我建议,使用列表理解(对于我们这些 还不知道 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'}]