Вычисление двух разных формул в одном столбце в Python 3 и Pandas
В настоящее время у меня есть следующий фрейм данных, и я хотел бы заполнить пустые ячейки «веса» смещенным значением (объяснено ниже ). Dataframe
Пример кода:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
import seaborn as sns
# Read in CSV file
climate_df = pd.read_csv("IDCJAC0001_009552_Data1.csv",header=None,skiprows = [0,],engine = 'python', names = ['Product code','Station number', 'Year','Month','Rainfall (mm)','Quality'], usecols = ['Year','Month','Rainfall (mm)'], parse_dates={'Datetime': ['Month', 'Year']} print(climate_df)
# Extract year and month from datetime object
climate_df['year'] = pd.DatetimeIndex(climate_df['Datetime']).year
climate_df['month'] = pd.DatetimeIndex(climate_df['Datetime']).month
# Set index
climate_df = climate_df.set_index(['Datetime'])
# New dataframe
climate_sum = pd.DataFrame()
# Calculate yearly rainfall values
climate_sum ['Annual Rain'] = climate_df.groupby(['year'])\
['Rainfall (mm)'].agg('sum')
# Calculate annual winter rainfall
# Subset summer rainfall values
climate_df = climate_df[(climate_df.month>=4) & (climate_df.month<=9)]
# Set index for year and month
climate_df.set_index(['year','month'],inplace = True,append = True, drop = True)
#print(climate_df)
climate_sum ['Winter Annual Rain'] = climate_df.groupby(['year'])\
['Rainfall (mm)'].agg('sum')
climate_sum = climate_sum[:-1]
climate_sum['10YMA (Annual)'] = climate_sum['Annual Rain'].rolling(window=10).mean().round(1).dropna()
climate_sum['10YMA (Winter)'] = climate_sum['Winter Annual Rain'].rolling(window=10).mean().round(1).dropna()
climate_sum['month'] = 12
# Set index
climate_sum = climate_sum.reset_index()
climate_sum['date']=climate_sum['year'].astype(str) + climate_sum['month'].\
astype(str).str.zfill(2)
climate_sum['date'] = pd.to_datetime(climate_sum['date'], format='%Y%m%d')
# Set index
climate_sum = climate_sum.set_index('date')
Мне нужно вычислить среднее значение в первой строке Effective_Annual_Rainfall и Winter_effective_rainfall. Для значений, указанных выше в остальной части столбца, я бы хотел следующее:
Формула эффективного годового количества осадков
А для значений в Winter_Effective_rainfall я хотел бы иметь следующие значения: Формула эффективного зимнего дождя
Обратите внимание, что относительное расстояние координат до текущей ячейки меняется. В терминологии Excel ссылки являются «абсолютными», а не «относительными». Подробнее о терминологии здесь.