如何解决将列表列表嵌套列表转换为数据框
我有一个嵌套列表,其中每个“嵌套列表”按10分钟间隔进行分组(使用timedelta函数)。
print(groups)
-----------------------results---------------------------
[[[1,Timestamp('2019-01-22 00:54:27')]],[[2,Timestamp('2019-01-22 08:37:04')]],[[3,Timestamp('2019-01-22 10:57:40')],[4,Timestamp('2019-01-22 10:57:43')]],[[5,Timestamp('2019-01-22 11:09:07')],[6,Timestamp('2019-01-22 11:16:18')],[7,Timestamp('2019-01-22 11:16:23')],[8,Timestamp('2019-01-22 11:16:25')]],[[9,Timestamp('2019-01-22 11:35:03')],[10,Timestamp('2019-01-22 11:35:35')]]...
这些是最初来自完整数据帧的信息。我正在尝试将此嵌套列表转换为数据框格式,并使用名为“ Group”的单独列。这意味着第一个“嵌套列表”将是组1,第二个“嵌套列表”将是组2。
正在考虑先转换为字典,再转换为数据框。但是,它们也不起作用。
{k:row[0] for row in groups for k in row[1:]}
dict((k[0],k[1:]) for k in groups)
error: unhashable type: 'list'
总而言之,我希望编写一个使我的过程自动化的函数,如下所示:
df_1 = pd.DataFrame(groups[1],columns=['index','datetime'])
df_1['group']=1
df_2 = pd.DataFrame(groups[2],'datetime'])
df_2['group']=2
df_3 = pd.DataFrame(groups[3],'datetime'])
df_3['group']=3
... etc...
很想听听你们如何解决这个问题!谢谢。
解决方法
这是您要达到的目标吗?
import pandas as pd
from pandas import Timestamp
l = [
[[1,Timestamp('2019-01-22 00:54:27')]],[[2,Timestamp('2019-01-22 08:37:04')]],[[3,Timestamp('2019-01-22 10:57:40')],[4,Timestamp('2019-01-22 10:57:43')]],[[5,Timestamp('2019-01-22 11:09:07')],[6,Timestamp('2019-01-22 11:16:18')],[7,Timestamp('2019-01-22 11:16:23')],[8,Timestamp('2019-01-22 11:16:25')]],[[9,Timestamp('2019-01-22 11:35:03')],[10,Timestamp('2019-01-22 11:35:35')]],]
df = pd.DataFrame(
[e1 + [g] for g,e0 in enumerate(l) for e1 in e0],columns = ['id','time','group'],)
print('As one DataFrame:\n',df)
dfs = [
pd.DataFrame(
[e1 + [g] for e1 in e0],)
for g,e0 in enumerate(l)
]
print('\nAs separate DataFrames:')
for df in dfs:
print('---------------------')
print(df)
输出
As one DataFrame:
id time group
0 1 2019-01-22 00:54:27 0
1 2 2019-01-22 08:37:04 1
2 3 2019-01-22 10:57:40 2
3 4 2019-01-22 10:57:43 2
4 5 2019-01-22 11:09:07 3
5 6 2019-01-22 11:16:18 3
6 7 2019-01-22 11:16:23 3
7 8 2019-01-22 11:16:25 3
8 9 2019-01-22 11:35:03 4
9 10 2019-01-22 11:35:35 4
As separate DataFrames:
---------------------
id time group
0 1 2019-01-22 00:54:27 0
---------------------
id time group
0 2 2019-01-22 08:37:04 1
---------------------
id time group
0 3 2019-01-22 10:57:40 2
1 4 2019-01-22 10:57:43 2
---------------------
id time group
0 5 2019-01-22 11:09:07 3
1 6 2019-01-22 11:16:18 3
2 7 2019-01-22 11:16:23 3
3 8 2019-01-22 11:16:25 3
---------------------
id time group
0 9 2019-01-22 11:35:03 4
1 10 2019-01-22 11:35:35 4
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。