我在每个文本文件中都有以下格式的行数据
档案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
任何人都可以请求代码帮助。非常感谢
答案 0 :(得分:1)
主要功能concat
,可创建大df
。但需要set_index
来对齐数据。
然后按T
转置df
并转换get_level_values
to_datetime
选择的第二级。
对于第一列和第二列,insert
与DatetimeIndex.date
和DatetimeIndex.time
一起使用{/ 3}。
上一次按reset_index
删除第二级,drop=True
,rename_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