Рассчитать среднее климатологическое значение, хранящееся в файлах excel / .CSV, в соответствии с днем ​​года в python - PullRequest
0 голосов
/ 13 января 2020

У меня есть данные X всех дней 2000-2005 годов в файле .CSV.

Я хочу получить среднее значение Х для одной и той же даты разных лет, то есть среднее значение Х от 01 января 2000 года, 01 января 2001 года, 01 января 2002 года, 01 января 2003 года, 01 января 2004 г. и 01 января 2005 г., затем 02 января 2000 г., 02 января 2001 г., 02 января 2002 г., 02 января 2003 г., 02 января 2004 г. и 02 января 2005 г. и т. Д. для всех дней.

Я использовал: dataframe.groupby('dateindex.dayofyear').mean()['X'] команду для той же цели, но, к сожалению, она дала неправильные средние значения с 29 февраля в високосные годы и с 1 марта в не високосные годы.

Пример с датами, значениями X и Средним значением (ожидаемый результат для данных примера):

   Date        X       Mean(Expected Outcome)
01-01-2000     1         (1+4)/2=2.5
02-01-2000     2              3.5
03-01-2000     3              4.5
01-01-2001     4              2.5
02-01-2001     5              3.5
03-01-2001     6              4.5

1 Ответ

0 голосов
/ 13 января 2020

В одну сторону, используя pd.to_datetime и pd.Series.dt.strftime:

df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df['Mean'] = df.groupby(df['Date'].dt.strftime("%m%d"))["X"].transform("mean")
print(df)

Или просто используя str:

df['Mean'] = df.groupby(df["Date"].str[:5])["X"].transform("mean")

Вывод:

        Date  X  Mean
0 2000-01-01  1   2.5
1 2000-01-02  2   3.5
2 2000-01-03  3   4.5
3 2001-01-01  4   2.5
4 2001-01-02  5   3.5
5 2001-01-03  6   4.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...