Pandas Compare - Как сравнить 2 столбца даты в 2 отдельных фреймах данных - PullRequest
1 голос
/ 13 октября 2019

Однажды у меня был csv с пропущенными датами, я создал новый df того же диапазона дат без пропущенных дат. Я хочу сравнить два csvs и поместить NaN везде, где есть пустые даты в исходном csv:

Пример:

    DateTime            Measurement Dates
0   2016-10-09 00:00:00 1021.9      2016-10-09
1   2016-10-11 00:00:00 1019.9      2016-10-10
2   2016-10-12 00:00:00 1015.8      2016-10-11
3   2016-10-13 00:00:00 1013.2      2016-10-12
4   2016-10-14 00:00:00 1005.9      2016-10-13

, поэтому я хочу, чтобы новая таблица была:

    DateTime            Measurement Dates
0   2016-10-09 00:00:00 1021.9      2016-10-09
1   Nan        00:00:00 Nan         2016-10-10
2   2016-10-11 00:00:00 1015.8      2016-10-11
3   2016-10-12 00:00:00 1013.2      2016-10-12
4   2016-10-13 00:00:00 1005.9      2016-10-13

А затем я удалю столбец DateTime, чтобы в последнем df был полный список дат с пропущенными измерениями.

Код, который я использовал до сих пор:

new_dates = pandas.date_range(start = '2016-10-09 00:00:00', end = '2017-10-09 00:00:00')

merged = pandas.merge(measurements, updated_dates,left_index=True, right_index=True)

1 Ответ

0 голосов
/ 13 октября 2019

Если я вас правильно понял, вы хотите изменить частоту вашего столбца DateTime на дневную частоту и заполнить пробелы NaN:

# Use this line if your DateTime column is not datetime type yet
# df['DateTime'] = pd.to_datetime(df['DateTime'])

dates = pd.date_range(df['DateTime'].min(), df['DateTime'].max(), freq='D')
df = df.set_index('DateTime').reindex(dates).reset_index()

Выходные данные

       index  Measurement
0 2016-10-09       1021.9
1 2016-10-10          NaN
2 2016-10-11       1019.9
3 2016-10-12       1015.8
4 2016-10-13       1013.2
5 2016-10-14       1005.9

Если у вас есть уникальные даты, вы также можете использовать resample. Если ваши даты не уникальны, они агрегируют их и принимают mean двух дат:

df.set_index('DateTime').resample('D').mean()

Выходные данные

    DateTime  Measurement
0 2016-10-09       1021.9
1 2016-10-10          NaN
2 2016-10-11       1019.9
3 2016-10-12       1015.8
4 2016-10-13       1013.2
5 2016-10-14       1005.9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...