Как извлечь данные Datetime из формата «ГГГГ-ММ-ДД HR-MN-SEC» в формат «ММ-ДД HR-MN-SEC»? - PullRequest
0 голосов
/ 19 апреля 2019

Я анализирую проблему временных рядов и у меня есть данные в формате 'ГГГГ-ММ-ДД HR-MN-SEC' .

Я хочу преобразовать данные в формат 'MM-DD HR-MN-SEC' .Короче хочу удалить данные year .После преобразования мне нужны данные в формате datetime , а не в виде строки.

Я попытался разделить данные, но он возвращает строку.Я хочу данные в том же формате в том же столбце.Вот код, который у меня есть ниже:

#slicing 2016 data

df8=df1.loc['2016',['humidity','pressure','temp']]

#removing outliers

df8=df8[(np.abs(stats.zscore(df8)) < 3).all(axis=1)]

df8.head()

                     humidity      pressure       temp

datetime_utc 

2016-01-01 00:00:00   100.0         1020.0         8.0
2016-01-01 03:00:00    94.0         1022.0        10.0
2016-01-01 06:00:00    51.0         1022.0        20.0
2016-01-01 09:00:00    32.0         1019.0        23.0

После преобразования я хочу, чтобы кадр данных выглядел следующим образом.Ждем помощи.

                     humidity      pressure       temp

datetime_utc 

01-01 00:00:00       100.0         1020.0         8.0
01-01 03:00:00        94.0         1022.0        10.0
01-01 06:00:00        51.0         1022.0        20.0
01-01 09:00:00        32.0         1019.0        23.0

1 Ответ

0 голосов
/ 19 апреля 2019

Как уже отмечалось, Datetime должен иметь год.Конечно, все они могут быть установлены в 0 и впоследствии игнорироваться.

Но этот вопрос касается работы с индексами с течением времени по месяцам, часам и т. Д.

Некоторые стратегии работают с PeriodIndex или TimedeltaIndex.Или терпеть данные в виде строк.Тогда есть Grouper(freq=).

Вот ящик занят.Удачи в анализе ваших временных рядов.

import pandas as pd

# period index strategy
df = pd.DataFrame({"y": [1,2,3,4,5]}, pd.to_datetime(["2000-03-31 00:00:00", "2000-05-31 00:00:00", "2000-08-31 00:00:00", "2000-11-30 00:00:00", "2001-01-31 00:00:00"]))
df.index = df.index.to_period("D")
print(df)

# timedelta strategy
df = pd.DataFrame({"y": [1,2,3,4,5]}, pd.to_datetime(["2000-03-31 00:00:00", "2000-05-31 00:00:00", "2000-08-31 00:00:00", "2000-11-30 00:00:00", "2001-01-31 00:00:00"]))
timedeltas = df.index.to_series().diff()
df['timedeltas'] = timedeltas
df['days'] = df['timedeltas'].apply(lambda x:x.days)
df['hours'] = df['timedeltas'].apply(lambda x:x.seconds/3600)
df.set_index(['days', 'hours'], inplace=True)
print(df)

# string strategy
df = pd.DataFrame({"y": [1,2,3,4,5]}, pd.to_datetime(["2000-03-31 00:00:00", "2000-05-31 00:00:00", "2000-08-31 00:00:00", "2000-11-30 00:00:00", "2001-01-31 00:00:00"]))
df['month'] = df.index.month
df['day'] = df.index.day
df.set_index(['month', 'day'], inplace=True)
print(df)

# time grouping
df = pd.DataFrame({"y": [1,2,3,4,5]}, pd.to_datetime(["2000-03-31 00:00:00", "2000-05-31 00:00:00", "2000-08-31 00:00:00", "2000-11-30 00:00:00", "2001-01-31 00:00:00"]))
data = df.groupby(pd.Grouper(freq='M')).count()
print (data)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...