[英]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']]
通過stack
和reset_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.