【发布时间】:2020-01-17 17:35:02
【问题描述】:
我正在提取大量数据。它以对象列表的形式出现。
示例:[[objectA,objectB],[objectC],[],[ObjectD]...]
每个对象都有很多属性,但是对于我的数据框,我只需要名称、值、时间戳、描述。 我尝试了两件事:
for events in events_list:
if len(events) > 0:
for event in events:
df = DataFrame([])
df['timestamp'] = event.timestamp
df['value'] = event.value
df['name'] = event.name
df['desc'] = event.desc
final_df = final_df.append(df)
完成此过程大约需要 15 分钟。
我将代码更改为使用 python 列表:
df_list = list()
for events in events_list:
if len(events) > 0:
for event in events:
df_list.append([event.timestamp, event.value, event.name, event.desc])
final_df = pd.DataFrame(df_list, columns=['timestamp', 'value', 'name', 'desc'])
通过此更改,我设法将时间减少到大约 ~10-11 分钟。
我仍在研究是否有更快的方法。在我使用 python list 进行更改之前,我尝试了字典,但它比我预期的要慢。目前我正在阅读看起来非常快的 Panads 矢量化,但是我不确定是否可以将它用于我的目的。 我知道 Python 循环有点慢,我对它们无能为力,所以我也在想办法在数据帧中执行这些循环。
我的问题是,你们之前有没有解决过这个问题,有没有更好的方法来解决这个问题?
编辑: 有关于数据的问题。它通过一个 API 来构造,因为每组对象都按名称分组。例如:
[[objectA, objectB (都同名)],[objectC],[EMPTY - 没有 此名称的数据],[ObjectD]...]
因为我无法改变获取数据的方式,所以我必须使用这种数据结构。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。