python - Python将具有不同时间戳的不同列表的列表转换为数据框
问题描述
我有一个大列表,其中通过 for 循环操作附加了不同的数据帧。现在 biglist 有不同的列表。其中一些子列表具有匹配的时间戳,而有些则没有。我想将此 biglist 转换为包含每个数据的数据框。我的代码:
biglist =
[
column1
11/09/2020 5:25:44 AM 36
11/09/2020 5:34:55 AM 35
11/09/2020 5:34:56 AM 36
11/09/2020 5:39:36 AM 35
11/09/2020 5:39:37 AM 36
11/09/2020 6:29:02 PM 45
11/09/2020 6:55:47 PM 45
11/09/2020 6:59:41 PM 43
11/09/2020 7:25:47 PM 43
11/09/2020 7:30:58 PM 42
[10 rows x 1 columns],
column2
11/09/2020 9:37:47 AM 11677
11/09/2020 5:27:55 PM 11677,
column3
11/09/2020 9:37:47 AM 1.33108e+06
11/09/2020 5:27:55 PM 1.33108e+06,
Column4
11/09/2020 6:23:25 AM 0.972756
11/09/2020 6:39:04 AM 1.90602
11/09/2020 6:45:10 AM 2.41583
11/09/2020 6:45:49 AM 2.93376
11/09/2020 6:49:13 AM 3.83149
11/09/2020 5:22:39 PM 2.12865
11/09/2020 5:25:28 PM 3.15538
11/09/2020 5:29:15 PM 2.12897
11/09/2020 5:47:06 PM 1.1835
11/09/2020 6:27:07 PM 0.971422
[10 rows x 1 columns]]
df = pd.concat(biglist)
目前的输出:
数据框基本上复制了列表中的所有索引。它实际上并没有产生一个单一的索引。相反,第一个列表索引和 column1 会首先出现,然后是第二个列表索引和 column2。相反,我期待一个包含所有索引和所有列的索引。某些列在没有数据时可能具有 NaN。
解决方案
改用pd.merge
:
df1 = pd.DataFrame([[1], [1], [4]], columns=['A'], index=['i1', 'i2', 'i3'])
df2 = pd.DataFrame([[2], [3], [6]], columns=['B'], index=['i1', 'i2', 'i4'])
biglist = [df1, df2]
final_df = biglist[0]
for df in biglist[1:]:
final_df = final_df.merge(df, left_index=True, right_index=True, how='outer')
print(final_df)
A B
i1 1.0 2.0
i2 1.0 3.0
i3 4.0 NaN
i4 NaN 6.0
推荐阅读
- vue.js - 如何退出
使用子路由时 - c# - 是否可以确定 Environment.SpecialFolder.System 驱动器的 Win32_DiskDrive SerialNumber?
- typescript - 如何在打字稿中动态地将装饰器添加到类中
- c# - 允许数据库查询但独立于所使用的数据库提供程序的设计模型
- java - 在 MPI (Java OpenMPI) 中发送大/大数据
- c# - Automapper 9.0 不起作用 ProjectsTo
- javascript - 谷歌日历 API - 源标题和小工具不适用于谷歌日历事件提示
- python-3.6 - 为什么我会看到 Python 套接字模块的 TypeError?
- php - 我可以在 Symfony 4 上使用 Doctrine (findOneBy()) 通过用户名和密码获取用户吗?
- python-3.x - 如何在soup.findAll python 3.2中获取一些类值