Использование абсолютной ссылки Excel для вычисления значений столбцов в Pandas - PullRequest
0 голосов
/ 09 мая 2020

Вычисление двух разных формул в одном столбце в 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 ссылки являются «абсолютными», а не «относительными». Подробнее о терминологии здесь.

...