Передача данных с условиями - PullRequest
0 голосов
/ 09 января 2020

Я новичок в Python и мне нужна поддержка!

У меня есть два кадра данных от гидрологических c станций (один для данных о потоке и другой для данных о дожде), с разрешением 15 мин, а также некоторые пропущенные даты / значения.

Datetime               Value   
2019-01-23 15:30:00    0.0
2019-01-23 15:45:00    0.0
2019-01-23 18:30:00    0.3
2019-01-23 18:45:00    0.0
2019-01-23 19:00:00    0.0
2019-01-23 19:15:00    0.0
2019-01-23 19:30:00    0.0
2019-01-23 19:45:00    0.0
2019-01-23 20:00:00    1.0
2019-01-23 20:15:00    0.0
2019-01-23 20:30:00    0.0
2019-01-23 20:45:00    0.0
2019-01-23 21:00:00    0.0
2019-01-23 21:15:00    0.0
2019-01-23 21:30:00    0.0
2019-01-23 23:00:00    0.0
2019-01-23 23:15:00    0.0
2019-01-23 23:30:00    0.0
2019-01-23 23:45:00    0.0
2019-01-24 00:00:00    0.0
....

Я хочу сделать выборку ежечасно и ежедневно («сумма» для данных о дожде, «среднее» для данных о потоке). Кроме того, мне нужны некоторые условия для повторной выборки:

Для ежечасной повторной выборки я хотел бы выполнить повторную выборку только в том случае, если в данный час есть хотя бы 2 значения. Для ежедневной повторной выборки, только если существует не менее 12 значений (на основе кадра данных после ежечасной повторной выборки). Все пропущенные значения после повторной выборки должны быть заменены на «-1», поэтому используемая мной гидрологическая модель понимает, что это недостающее значение.

Мне удалось выполнить повторную выборку для данных о дожде, так как это sum:

df = Dataframe

df_hourly = df.resample("H", closed='right').sum(min_count=2).round(3)
df_daily = df_hourly.resample("D", closed='right').sum(min_count=12).round(3)

df_hourly.to_csv("hourly.txt", sep="\t", na_rep="-1.0")
df_daily.to_csv("daily.txt", sep="\t", na_rep="-1.0")

Результаты (до записи в csv и замены NaN) были:

Datetime                  
2019-01-23 15:00:00    NaN
2019-01-23 16:00:00    NaN
2019-01-23 17:00:00    NaN
2019-01-23 18:00:00    NaN
2019-01-23 19:00:00    1.0
2019-01-23 20:00:00    0.0
2019-01-23 21:00:00    NaN
2019-01-23 22:00:00    NaN
2019-01-23 23:00:00    0.0
2019-01-24 00:00:00    NaN
2019-01-24 01:00:00    0.0
....

Datetime         
2019-01-23    NaN
2019-01-24    0.2
2019-01-25    7.0
2019-01-26    0.0
2019-01-27    4.0
....

Когда я пытался сделать то же самое, но для данных потока (заменив .sum (~) на .mean (~) , я получаю сообщение об ошибке:

pandas.errors.UnsupportedFunctionCall: numpy operations are not valid with resample.
Use .resample(...).mean() instead

Как можно Мне удается пересчитать средние данные с учетом необходимых мне условий?

Заранее спасибо!

...