【发布时间】:2016-12-02 02:59:38
【问题描述】:
我正在做一些网络抓取,并以以下形式存储感兴趣的变量:
a = {'b':[100, 200],'c':[300, 400]}
这是一个页面,其中有两个 b 和两个 c。下一页可能有三个,我将它们存储为:
b = {'b':[300, 400, 500],'c':[500, 600, 700]}
当我从dict 的列表中创建一个DataFrame 时,我得到:
import pandas as pd
df = pd.DataFrame([a, b])
df
b c
0 [100, 200] [300, 400]
1 [300, 400, 500] [500, 600, 700]
我期待的是:
df
b c
0 100 300
1 200 400
2 300 500
3 400 600
4 500 700
我可以在每次存储页面时创建一个DataFrame,并在最后创建DataFrame 的列表concat。然而,根据经验,这是非常昂贵的,因为构造数以千计的DataFrame 比从较低级别的构造函数(即dict 的列表)创建一个DataFrame 要昂贵得多。
【问题讨论】:
-
this question 可能重复?不完全是,但至少这两个问题彼此密切相关。
-
遍历键和合并列表似乎是您想要的解决方案。
-
您还需要
a和bdicts 吗?如果没有,您可以在从所有页面收到数据时继续将数据附加到dicta,然后执行df = pd.DataFrame(a)。
标签: python pandas dictionary dataframe