簡體   English   中英

從 arrays 列表中熱創建 pandas DataFrame?

[英]Hot to create pandas DataFrame from the list of arrays?

我的數據結構如下:

listOfArrays = 
    [array([3, 21, 28]),
     array([13, 14, 2, 29]),
     array([2, 21])]

我需要將其轉換為具有 1 列的 pandas DataFrame:

col1
3
21
28
13
14
2
29
2
21

目前我一一創建 pandas DataFrames:

df1 = pd.DataFrame(lisOfLists[0])
df2 = pd.DataFrame(lisOfLists[1])
...

我使用pd.concat連接它們。

有沒有更短的方法?

您可以使用列表推導來做到這一點:

from numpy import array
import pandas as pd

listOfArrays = [array([3, 21, 28]), array([13, 14, 2, 29]), array([2, 21])]

df = pd.concat([pd.Series(array) for array in listOfArrays])
>>> pd.DataFrame({"col1": np.concatenate(listOfArrays, axis=0)}) col1 0 3 1 21 2 28 3 13 4 14 5 2 6 29 7 2 8 21

使用itertool chain.from_iterable的解決方案:

from numpy import array
import pandas as pd
import itertools

list_of_arrays = [array([3, 21, 28]), array([13, 14, 2, 29]), array([2, 21])]
df = pd.DataFrame(itertools.chain.from_iterable(list_of_arrays), columns=['col1'])
print(df)

output:

   col1
0     3
1    21
2    28
3    13
4    14
5     2
6    29
7     2
8    21

您可以將列表加載到 dataframe 中,然后使用melt

df = pd.DataFrame(listOfArrays).melt()[['value']]

通過stackreset_index

df = pd.DataFrame(listOfArrays).stack().reset_index()[[0]]

或者也可以使用 itertools 鏈:

from itertools import chain
df = pd.DataFrame({'col1':list(chain(*listOfArrays))})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM