在pandas DF中添加行作为数字列索引?

时间:2018-02-06 20:09:14

标签: python pandas shape

我尝试了几种方法,但我很难过。我的最后一次尝试产生了一个错误:" ValueError:计划形状未对齐"

因此,根据从外部文件读入的数据,我有一个数据框,其中最多可包含1,000列。这些列都将拥有自己的标签/名称,即" Name"," BirthYear",Hometown"等等。我想在开头添加一行从0到(尽可能多的列)的数据帧,因此如果数据最终有232列,则新的第一行的值为0,1,2,3,4 .... 229,230,231,232。

我正在做的是创建一个单行数据帧,其列数/值与主(" mega")数据帧中的列数/值一样多,然后将它们连接起来。它向我抛出这个形状错误,但是当我打印每个框架的形状时,它们在长度方面匹配。不知道我做错了什么,任何帮助将不胜感激。谢谢!

colList = list(range(0, len(mega.columns)))
indexRow = pd.DataFrame(colList).T
print(indexRow)
print(indexRow.shape)
print(mega.shape)
mega = pd.concat([indexRow, mega],axis=0)

结果是......

  0     1     2     3     4     5     6     7     8     9     ...   1045  \
0     0     1     2     3     4     5     6     7     8     9  ...   1045   

   1046  1047  1048  1049  1050  1051  1052  1053  1054  
0  1046  1047  1048  1049  1050  1051  1052  1053  1054  

[1 rows x 1055 columns]
(1, 1055)
(4, 1055)
ValueError: Plan shapes are not aligned

1 个答案:

答案 0 :(得分:3)

这是一种方法。根据您的数据,这可能会混合类型(例如,如果一列是时间戳)。此外,这会重置您的索引。

mega = pd.DataFrame(np.random.randn(3,3), columns=list('ABC'))

indexRow = pd.DataFrame({col: [n] for n, col in enumerate(mega)})
>>> pd.concat([indexRow, mega], ignore_index=True)
          A         B         C
0  0.000000  1.000000  2.000000
1  0.413145 -1.475655  0.529429
2  0.416250 -0.055519  1.611539
3  0.154045 -0.038109  1.020616