這個問題在這里已經有了答案:
data={"col1":[1,2,3,5], "col_2":[6,7,8,9], "col_3":[10,11,12,14], "col_4":[7,8,9,10]}
pd.DataFrame.from_dict(data)
![如何將一個熊貓資料框中的多列合并為一個系列?[復制]](https://img.uj5u.com/2022/03/29/7ac1aa79f25645b3a5fd5f94d9b5e32e.png)
uj5u.com熱心網友回復:
如果您從字典開始,請使用itertools.chain:
data={"col1":[1,2,3,5], "col_2":[6,7,8,9], "col_3":[10,11,12,14], "col_4":[7,8,9,10]}
from itertools import chain
pd.DataFrame({'col': chain.from_iterable(data.values())})
否則,ravel底層 numpy 陣列:
df = pd.DataFrame.from_dict(data)
pd.Series(df.to_numpy().ravel('F'))
輸出:
0 1
1 2
2 3
3 5
4 6
5 7
6 8
7 9
8 10
9 11
10 12
11 14
12 7
13 8
14 9
15 10
dtype: int64
根據要執行的計算,您甚至可能不需要實體化 DataFrame/Series 并堅持使用陣列:
a = df.to_numpy().ravel('F')
輸出:array([ 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 7, 8, 9, 10])
uj5u.com熱心網友回復:
嘗試melt
out = pd.DataFrame.from_dict(data).melt().drop(['variable'],axis=1)
Out[109]:
value
0 1
1 2
2 3
3 5
4 6
5 7
6 8
7 9
8 10
9 11
10 12
11 14
12 7
13 8
14 9
15 10
uj5u.com熱心網友回復:
您可以將 DataFrame 轉換為 numpy 陣列并使用該ravel方法將其展平。最后,用結果構造一個 Series(或 DataFrame)。
data = {"col1":[1,2,3,5], "col_2":[6,7,8,9], "col_3":[10,11,12,14], "col_4":[7,8,9,10]}
df = pd.DataFrame(data)
new_col = pd.Series(df.to_numpy().ravel(order='F'), name='new_col')
輸出:
>>> new_col
0 1
1 2
2 3
3 5
4 6
5 7
6 8
7 9
8 10
9 11
10 12
11 14
12 7
13 8
14 9
15 10
Name: new_col, dtype: int64
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451580.html
標籤:Python 熊猫 数据框 sklearn-熊猫
上一篇:涉及itertools的兩個嵌套for回圈不會產生外部回圈的排列
下一篇:如何計算折扣的運費
