我有一个csv文件,其中包含(YY,MM,DD,hh.mm,ss)格式的数据,然后进行测量。问题是所有的内容都以','分隔。当我使用
pd.read_csv(path_new_data, sep=',')
我将所有列分开,如下所示。
18 1 8 15 17 5 97.216
0 18 1 8 15 22 7 98.039
1 18 1 8 15 27 8 97.587
2 18 1 8 15 32 9 97.535
3 18 1 8 15 37 11 97.637
我想要的是将前6列合并到一个或什至更好的列上,以便在最后一列上指定定界符ony并得到类似以下的内容
181815175 97.216
0 181815227 98.039
1 181815278 97.587
2 181815329 97.535
3 1818153711 97.637
有什么想法吗?
答案 0 :(得分:1)
我认为没有必要,只需定义列名称并使用regex101:
从DataFrame的多个列中组合一个日期时间。键可以是常见的缩写,例如['year','month','day','minute','second','ms','us','ns']),也可以是多个缩写。
temp=u"""18,1,8,15,17,5,97.216
18,1,8,15,22,7,98.039
18,1,8,15,27,8,97.587
18,1,8,15,32,9,97.535
18,1,8,15,37,11,97.637"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
names = ['year','month','day','hour','minute','second','data']
df = pd.read_csv(pd.compat.StringIO(temp), names=names)
print (df)
year month day hour minute second data
0 18 1 8 15 17 5 97.216
1 18 1 8 15 22 7 98.039
2 18 1 8 15 27 8 97.587
3 18 1 8 15 32 9 97.535
4 18 1 8 15 37 11 97.637
#add 20 for correct parsing
df['year'] = '20' + df['year'].astype(str)
cols = ['year','month','day','hour','minute','second']
df['date'] = pd.to_datetime(df[cols])
df = df.drop(cols, axis=1)
print (df)
data date
0 97.216 2018-01-08 15:17:05
1 98.039 2018-01-08 15:22:07
2 97.587 2018-01-08 15:27:08
3 97.535 2018-01-08 15:32:09
4 97.637 2018-01-08 15:37:11