将来自多个txt文件的行数据以列格式组合到单个数据帧中

时间:2017-08-01 12:11:15

标签: python pandas numpy

我在每个文本文件中都有以下格式的行数据

档案1

   Sample 1, 24/07/2017 13:26:08
0  Peak at 1219 , 1.864
1  Peak at 1092 , 0.412
2  Peak at 1358 , 1.661

文件2

   Sample 2, 24/07/2017 14:28:15
0  Peak at 1219 , 1.544
1  Peak at 1092 , 0.315
2  Peak at 1358 , 1.564

档案3

   Sample 3, 24/07/2017 15:31:05
0  Peak at 1219 , 1.954
1  Peak at 1092 , 0.524
2  Peak at 1358 , 1.423

我希望合并所有文件中的数据,并以这种列格式创建单个数据框。

  Sample No  Date        Time      Peak at 1219  Peak at 1092  Peak at 1358 
0     1      24/07/2017  13:26:08    1.864        0.412          1.661
1     2      24/07/2017  13:28:15    1.544        0.315          1.564
2     3      24/07/2017  13:31:05    1.954        0.524          1.423

任何人都可以请求代码帮助。非常感谢

1 个答案:

答案 0 :(得分:1)

主要功能concat,可创建大df。但需要set_index来对齐数据。

然后按T转置df并转换get_level_values to_datetime选择的第二级。

对于第一列和第二列,insertDatetimeIndex.dateDatetimeIndex.time一起使用{/ 3}。

上一次按reset_index删除第二级,drop=Truerename_axis代表列名,再次reset_index

dfs = [df1,df2,df3]
#set first column to index
dfs = [x.set_index(x.columns[0]) for x in dfs]

df = pd.concat(dfs, 1, keys = range(1, len(dfs) + 1)).T
print (df)
                       Peak at 1219  Peak at 1092  Peak at 1358
1 24/07/2017 13:26:08         1.864         0.412         1.661
2 24/07/2017 14:28:15         1.544         0.315         1.564
3 24/07/2017 15:31:05         1.954         0.524         1.423

print (df.index.labels[0])
FrozenNDArray([0, 1, 2], dtype='int8')

dates = pd.to_datetime(df.index.get_level_values(1))
df.insert(0, 'Date', dates.date)
df.insert(1, 'Time', dates.time)
df = df.reset_index(level=1, drop=True).rename_axis('Sample No').reset_index()
print (df)
   Sample No        Date      Time  Peak at 1219  Peak at 1092  Peak at 1358
0          1  2017-07-24  13:26:08         1.864         0.412         1.661
1          2  2017-07-24  14:28:15         1.544         0.315         1.564
2          3  2017-07-24  15:31:05         1.954         0.524         1.423