read_csv,在部分数据中使用分界符

时间:2018-06-26 07:49:09

标签: pandas csv merge

我有一个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

有什么想法吗?

1 个答案:

答案 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