我有一個由 3760 行組成的資料框。我想將它分成 10 個等長的部分,然后將每個新陣列用作新 DataFrame 的列。
我發現這樣做的一種方法是:
alfa = np.array_split(dff, 10)
caa = pd.concat([alfa[0].reset_index(drop=True), alfa[1].reset_index(drop=True), alfa[2].reset_index(drop=True), alfa[3].reset_index(drop=True),
alfa[4].reset_index(drop=True), alfa[5].reset_index(drop=True), alfa[6].reset_index(drop=True), alfa[7].reset_index(drop=True),
alfa[8].reset_index(drop=True), alfa[9].reset_index(drop=True)], axis=1)
不是很酷,效率不是很高。
然后我嘗試了
teta = pd.concat(np.array_split(dff, 10), axis=1, ignore_index=True)
但它不像我想要的那樣作業,因為它給了我這個:

我認為這是因為ignore_index軸 1 上的作業
有更好的方法嗎?
uj5u.com熱心網友回復:
您可以使用串列推導來連接您的列。此代碼期望您的列名稱為init_col:
chunks = 10
cols = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
out = pd.concat(
[np.array_split(dff, chunks)[i]
.reset_index(drop=True)
.rename(columns={"init_col": cols[i]})
for i in range(chunks)],
axis=1
)
uj5u.com熱心網友回復:
看起來原來的 DataFrame 似乎只是一個陣列?在這種情況下,也許您可??以使用numpy.reshape:
new_df = pd.DataFrame(dff.to_numpy().reshape(10,-1).T, columns=dff.columns.tolist()*10)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/433529.html
