如何将 1 列数据框转换为 8 列

How to convert 1 column dataframe to 8 column

如何将 1 列数据帧数组(在 python 中)转换为 8 列数据帧?

我试过使用 Numpy 重塑函数如下:

    data = []
    for x in range(0, 24):
        data.append(x)

    df = pd.DataFrame(data)
    reshaped = pd.DataFrame(np.reshape(df.columns.to_numpy(), (1, 8)), columns=["Heading1", "Heading2", "Heading3", "Heading4", "Heading5", "Heading6", "Heading7", "Heading8"])

但是这样做时,出现以下错误:

ValueError: cannot reshape array of size 1 into shape (8)

所以,我期待输出 3 行 x 8 列 0 到 24 之间的数字

你有什么建议吗?

我正在对您所追求的内容做出一些假设,即 8 列 3 行,其中您的原始范围按顺序分布在新的较短行中。

reshaped = pd.DataFrame(np.reshape(df.to_numpy(), (3, 8)), columns=["Heading1", "Heading2", "Heading3", "Heading4", "Heading5", "Heading6", "Heading7", "Heading8"])

   Heading1  Heading2  Heading3  Heading4  Heading5  Heading6  Heading7  \
0         0         1         2         3         4         5         6   
1         8         9        10        11        12        13        14   
2        16        17        18        19        20        21        22   

   Heading8  
0         7  
1        15  
2        23 

这里有两大区别:

  1. 我们不需要由数据框的列组成的 numpy 数组。我们想要整个 1x24 数据帧之一。所以只是 df.to_numpy()
  2. 输出的重塑 numpy 数组的形状必须与原始数组共享相同的倍数 1*24 != 1*8,而不是我们需要一个 3 x 8 大小的数组。

试试这个:

data = np.arange(24)
df = pd.DataFrame(data, columns=['value'])

new_data = np.array(df['value']).reshape(-1, 8)

new_df = pd.DataFrame(new_data)
new_df.columns = ["Heading1", "Heading2", "Heading3", "Heading4", "Heading5", "Heading6", "Heading7", "Heading8"]

输出:


Heading1    Heading2    Heading3    Heading4    Heading5    Heading6    Heading7    Heading8
0   0   1   2   3   4   5   6   7
1   8   9   10  11  12  13  14  15
2   16  17  18  19  20  21  22  23