嵌套列表中字典的数据框 - Python

时间:2021-02-10 19:58:54

标签: python pandas list dataframe dictionary

例如,我有一个包含 2 个列表的嵌套列表,其中包含这样的字典:[[{},{},{},{}],[{},{},{},{}]]

[[{'Date': 'Dec 16 2020', 'Open': '37.00', 'High': '37.71', 'Low': '36.65', 'Close': '36.67', 'Adj Close': '36.67', 'Volume': '1840194'}, {'Date': 'Dec 15 2020', 'Open': '35.80', 'High': '36.88', 'Low': '35.63', 'Close': '36.79', 'Adj Close': '36.79', 'Volume': '1683816'}, {'Date': 'Dec 14 2020', 'Open': '35.48', 'High': '36.63', 'Low': '35.48', 'Close': '35.74', 'Adj Close': '35.74', 'Volume': '1808091'}, {'Date': 'Dec 11 2020', 'Open': '36.29', 'High': '36.63', 'Low': '34.96', 'Close': '35.08', 'Adj Close': '35.08', 'Volume': '1947461'}, {'Date': 'Dec 10 2020', 'Open': '36.51', 'High': '36.88', 'Low': '35.47', 'Close': '36.35', 'Adj Close': '36.35', 'Volume': '2207529'}],[{'Date': 'Sep 22 2020', : lose': '22.17', 'VolOpen': '22.00', 'High': '22.87', 'Low': '21.89', 'Close': '22.87', 'Adj Close': '22.87', 'Volume': '1997258'}, {'Date': 'Oct 05 2020', 'Open': '21.60', 'High': '
'Open': '21.01', 'High': '21.85', 'Low': '20.74', 'Close': '21.43', 'Adj Close': '21.43', 'Volume': '2064940'}, {'Date': 'Sep 21'O, 'Volume': '2064940 '20.72', 'Close': '21.19', 'Adj Close': '21.19', 'Volume': '2007302'}, {'Date': 'Oct 01 2020', 'Open': '22.35', 'High': '22.XMRClose': '20.88', 'Adj Close': '20.88', 'Volume': '3544256'}]]

我想要 2 个数据帧,例如:

          Date  Open  High  Low  Close Adj Close Volume 
   Dec 16 2020    37    37   36         36      1840194 
   Dec 15 2020     '     '    '          '            '
   Dec 14 2020     '     '    '          '            '
   Dec 13 2020     '     '    '          '            '

我显然不能使用它:

df = pd.DataFrame(data)

将数据作为字典列表。

1 个答案:

答案 0 :(得分:1)

解决方案很简单,就是把你的列表列表压平,然后你就可以正常将它传递给pandas

l = [
  [{'date':1, 'value':'1'}, {'date':2, 'value':'2'}],
  [{'date':3, 'value':'3'}, {'date':4, 'value':'4'}]
]
df = pd.DataFrame([item for sublist in l for item in sublist])

会得到你

   date   value
0     1     '1'
1     2     '2'
2     3     '3'
3     4     '4'

Source

虽然如果你需要一个 Pandas DataFrames 列表,你可以像这样简单地迭代你的主列表:

df_list = []
for x in l:
     df_list.append(pd.DataFrame(x))

或者干脆

df_list = [pd.DataFrame(x) for x in l]