read_csv, используйте разделитель в части данных - PullRequest
0 голосов
/ 26 июня 2018

У меня есть CSV-файл, который содержит данные в форме (ГГ, ММ, ДД, чч.мм, сс) с последующим измерением.проблема в том, что все разделены с ','.Когда я использую

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 столбцов были объединены в один или даже лучше, чтобы указать разделительтолько в последних столбцах и получите что-то вроде следующего:

    181815175   97.216
0   181815227   98.039
1   181815278   97.587
2   181815329   97.535
3   1818153711  97.637

Есть идеи?

1 Ответ

0 голосов
/ 26 июня 2018

Я думаю, что в этом нет необходимости, только определите имена столбцов и используйте to_datetime:

Сборка даты и времени из нескольких столбцов 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
...