Переиндексировать DataFrame и объединить два столбца - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть CSV-файл с ценой акции, который выглядит следующим образом:

Index Date       Time Open High Low Close
0     01/01/2000 900  10   12   9   11
1     01/01/2000 901

Что я хочу сделать, это сбросить фактический индекс, объединить столбцы даты и времени в один и использовать егокак индекс в формате Panda TimeSeries.Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Ваши данные:

data = pd.DataFrame({'Date': ['01/01/2000', '01/01/2000'], 'Time': [900, 901], 'Open': [10, None],
                     'High': [12, None], 'Low': [9, None], 'Close': [11, None]})

Это может быть не лучшее решение, но оно работает.

data['Date'] = pd.to_datetime(data['Date'])
data['Minutes'] = data['Time'].astype(str).str[-2:] #get minutes from Time
data['Hours'] = data['Time'].astype(str).str[:-2] #get hours from Time
#set to index Date and Time
data.index = data['Date'] + pd.to_timedelta(data['Hours'].astype(int), unit='h') + \
    pd.to_timedelta(data['Minutes'].astype(int), unit='m')

Вывод:

                          Date  Time  Open  High  Low  Close Minutes Hours
2000-01-01 09:00:00 2000-01-01   900  10.0  12.0  9.0   11.0      00     9
2000-01-01 09:01:00 2000-01-01   901   NaN   NaN  NaN    NaN      01     9

А затем просто отбросьте столбцы:

data.drop(['Date', 'Time', 'Minutes', 'Hours'], 1)

Окончательный вывод:

                     Open  High  Low  Close
2000-01-01 09:00:00  10.0  12.0  9.0   11.0
2000-01-01 09:01:00   NaN   NaN  NaN    NaN
0 голосов
/ 28 декабря 2018
    df = pd.DataFrame({'Date':['01/01/2000'], 'Time':['900']})
    # Make it 24 hour time by adding leading zero
    df['DateTime'] = df['Date'] + ' 0' + df['Time']  
    # Let pandas figure out the datetime structure
    df['DateTime'] = pd.to_datetime(df['DateTime'])
    df.set_index('DateTime', inplace=True)

>>> df
                           Date Time
DateTime
2000-01-01 09:00:00  01/01/2000  900
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...