Как объединить панды столбцы и объединить дату и время - PullRequest
1 голос
/ 09 мая 2019

У меня из CSV-файла есть такой фрейм данных:

Unnamed: 0 Unnamed: 1  Temp    Hi   Low  Out  Dew   Wind Wind.1 Wind.2   Hi.1  ...   In    In In .1 In .2 In .3   In Air Unnamed: 30 Wind.4 Wind.5    ISS   Arc.

   0        Date       Time   Out  Temp  Temp  Hum  Pt.  Speed    Dir    Run  Speed  ...  Temp  Hum   Dew  Heat   EMC  Density         ET    Samp    Tx   Recept  Int.

   1    09/04/19      11:05   ---   ---   ---  ---  ---    0.0    ---   0.00    0.0  ...  27.8   30   8.6  26.6  6.05   1.1483        0.00      0      1     0.0     5

   2    09/04/19      11:10   ---   ---   ---  ---  ---    0.0    ---   0.00    0.0  ...  28.1   29   8.4  26.8  5.85   1.1475        0.00      0      1     0.0     5

   3    09/04/19      11:15   ---   ---   ---  ---  ---    0.0    ---   0.00    0.0  ...  28.2   29   8.5  27.0  5.85   1.1468        0.00      0      1     0.0     5

Я хотел бы иметь массив значений, содержащий дату и время каждого измерения. Как объединить два первых столбца, в которых различаются дата и время. Спасибо за любую помощь в этом вопросе.

Ответы [ 3 ]

0 голосов
/ 10 мая 2019

У меня была похожая вещь, я использовал "вспомогательный" столбец datetime

df['helper']=df.Date+' '+df.Time

       date   time        helper
 1  09/04/19  11:15  09/04/19 11:15
 2  09/04/19  11:05  09/04/19 11:05

, а затем

df['DateTime'] = pd.to_datetime(df.helper)

1   2019-09-04 11:15:00
2   2019-09-04 11:05:00
Name: DateTime, dtype: datetime64[ns]

и, наконец,

df.drop(columns='helper', inplace=True)  
0 голосов
/ 10 мая 2019

Вы можете использовать df.apply(axis=1), чтобы создать новую серию панд на основе значений из нескольких столбцов. В вашем случае это может выглядеть примерно так:

def merge_datetime(row):
    date = row['Date']
    time = row['Time']
    return pd.to_datetime(f'{date} {time}')

datetimes = df.apply(merge_datetime, axis=1)

datetimes.values # numpy array
0 голосов
/ 10 мая 2019

Если вам просто нужно это как строка, тогда

df["Date_Time"] = df["Date"].map(str) + ' ' + df["Time"].map(str)

Но если вы хотите сохранить формат даты, попробуйте код ниже, который создаст новый столбец Date_Time с форматом datetime64 [ns].

df['Date_Time'] = pd.to_datetime(df['Date']+' '+df['Time'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...