您就快到了。
问题在于,每个子数据帧中的列名都不同。因此,当pandas执行时
concat,它不仅将数据框追加到底部,还扩展了数据框以使其具有正确名称的新列,然后追加了行。
您可以通过重命名子数据框中的列来解决此问题,例如
for sub_df in pieces: sub_df.columns=range(12)
NB
df2到
df8包含你想要什么,我想。由于某种原因,您
df1只包含了前7列,而不是12列。我假设这是一个错字。
产生完整的工作代码(我将您的输入数据复制到名为的文件中
'data1.csv')
import pandas as pdimport numpy as npdf = pd.read_csv('data1.csv')df1 = df.ix[:,0:12]df2 = df.ix[:,12:24]df3 = df.ix[:,24:36]df4 = df.ix[:,36:48]df5 = df.ix[:,48:60]df6 = df.ix[:,60:72]df7 = df.ix[:,72:84]df8 = df.ix[:,84:96]pieces = (df1,df2,df3,df4,df5,df6,df7,df8)# Give the columns the same labels in each sub dataframe# I've used numbers for convenience - you can give more descriptive names if you wantfor sub_df in pieces: sub_df.columns=range(12)df_final = pd.concat(pieces, ignore_index = True)print df_final关于订购的最后说明
您会注意到示例中列的意外排序。这不会影响我的解决方案,但是为了完整起见,我将对其进行解释。
输出中的列采用所谓的“字典顺序”。在使用Python(和其他语言)对包含数字的字符串进行排序时,这是一个常见问题。它们以看起来
几乎正确 的顺序排序,但是以某种方式运行1,10,11 …
19,2,20,依此类推。这是因为通过排序像字典一样的字母排序的信,但
0要
9来临前
a



