如何在不同的项目中拆分大列表项目
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'}]
我有一个元素列表,但这些元素应该由 ,-分隔符分隔成更多元素。
[[{'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'}]