将数据帧重塑为具有无限行并在没有值的地方填充零的数据帧

ele*_*aby 2 python numpy reshape dataframe pandas

有没有办法将 DataFrame 重塑为另一个具有不受限制的行的方法。我只想要一个有 3 列的 DataFrame,不管 DataFrame 中有多少行?

例如,

letters = pd.DataFrame({'Letters' : ['A', 'B', 'C','D', 'E', 'F', 'G', 'H', 
'I','J']})

Letters
0   A
1   B
2   C
3   D
4   E
5   F
6   G
7   H
8   I
9   J
Run Code Online (Sandbox Code Playgroud)

我想像这样用填充零来重塑它,在那里没有价值。

first   second  third
A       B       C
D       E       F
G       H       I
J       0       0
Run Code Online (Sandbox Code Playgroud)

据我所知,在 numpy reshape 方法中,您需要明确确定您想要多少列和行。

unu*_*tbu 6

您可以使用NumPy reshapearr.reshape((-1, 3))告诉NumPy的重塑arr到形状(n, 3),其中n基于大小计算了你arr和其它给定尺寸(多个)(例如,在这个例子中,值3)的大小。

import numpy as np
import pandas as pd

letters = pd.DataFrame({'Letters' : ['A', 'B', 'C','D', 'E', 'F', 'G', 'H', 'I','J']})
arr = np.empty(((len(letters) - 1)//3 + 1)*3, dtype='O')
arr[:len(letters)] = letters['Letters']
result = pd.DataFrame(arr.reshape((-1, 3)), columns='first second third'.split())
result = result.fillna(0)
print(result)
Run Code Online (Sandbox Code Playgroud)

印刷

  first second third
0     A      B     C
1     D      E     F
2     G      H     I
3     J      0     0
Run Code Online (Sandbox Code Playgroud)