我有兩個 DataFrame,我想選擇每一行的每一行并將它們粘在一起以構建一個陣列。
import pandas as pd
df = pd.DataFrame()
df ['a'] = [1, 2, 3]
df ['b'] = [4, 7, 1]
df1 = pd.DataFrame()
df1 ['a'] = [3, 7, 8]
df1 ['b'] = [9, 2, 1]
例如,我想1從兩個資料框中選擇行并將陣列構建為:
array([[1, 3],
[4, 9]])
或者對于第 3 行,輸出應該是:
array([[3, 8],
[1, 1]])
這是一個回圈,每次我都需要每一行的陣列。
uj5u.com熱心網友回復:
您可以使用如下簡單的方法,測驗的 2,2 大小根據您的 df.
import numpy as np
test = np.zeros((2, 2))
test [0,:] = df.iloc[0,:]
test [1,:] = df1.iloc[0,:]
test = test.T
使用 for 回圈,您可以更改df.iloc[i,:].
uj5u.com熱心網友回復:
在您的情況下,定義一個函式會更有幫助:
import numpy as np
def getRowArray(df1=df, df2=df1, row_number=1):
array1 = df1.iloc[row_number 1].to_numpy().reshape(-1,1)
array2 = df2.iloc[row_number 1].to_numpy().reshape(-1,1)
return(np.concatenate([array1, array2], axis=1))
例如,如果您呼叫 ,getRowArray(row_number=1)它將導致:
array([[1, 3],
[4, 9]])
請注意,資料幀中的索引從零開始,但此函式基于您提供的示例(此函式中的第一個索引是 1 而不是零)
另一個例子:
getRowArray(row_number=3)
結果:
array([[3, 8],
[1, 1]])
uj5u.com熱心網友回復:
你可以concat to_numpy得到一個 size 的陣列len(df) x (df.shape[1] df1.shape[1])。然后reshape進入 3D 陣列并transpose轉換為所需的形狀:
out = pd.concat((df, df1), axis=1).to_numpy().reshape(*df.shape, 2).transpose(0,2,1)
輸出:
array([[[1, 3],
[4, 9]],
[[2, 7],
[7, 2]],
[[3, 8],
[1, 1]]], dtype=int64)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/441250.html
上一篇:重復每個專案不同的次數
