Есть ли способ использовать этот цикл для возврата всех значений в этом файле Excel при выполнении вычислений в коде?Python

Программы на Python
Anonymous
Есть ли способ использовать этот цикл для возврата всех значений в этом файле Excel при выполнении вычислений в коде?

Сообщение Anonymous »

Я пытаюсь понять, как использовать написанный мною код, в частности раздел цикла кода, для возврата всех уникальных значений в этом файле Excel, но выполняю этот расчет, вычитая 2018 и 2021 годы, просто оставляя значение разницы рядом со столбцами региона и страны.
Я знаю, что для этого мне придется использовать цикл, но не знаю, как лучше это сделать, у меня есть пробовал разные подходы, например использование вложенного цикла, но он просто выдаёт либо повторяющиеся, либо неправильные значения, а в некоторых случаях вычисление даже не происходит.
Вот пример данных, с которыми я работаю:
df = pd.DataFrame({'Country': ['Austria', 'Austria', 'Ireland', 'Ireland'],
'REGION_2D': ['AT10', 'AT10', '4', '4'],
'value': [850.01874, 869.550869, 545.4036925, 560.695257],
'YEAR': [2018, 2021, 2018, 2021]})

Вот мой код:
import pandas as pd

df = pd.read_excel(r"C:\Users\blakecar\PycharmProjects\LFS Data\Mock File Population.xlsx", sheet_name='Sheet1')

df["COUNTRY"] = df["COUNTRY"].astype(pd.StringDtype())
df["REGION_2D"] = df["REGION_2D"].astype(pd.StringDtype())
df["Key"] = df["Key"].astype(pd.StringDtype())
df["Variable"] = df["Variable"].astype(pd.StringDtype())
df["variable_category"] = df["variable_category"].astype(pd.StringDtype())
df["YEAR"] = df["YEAR"].astype(pd.StringDtype())
print(df.dtypes)

#output dataframe to print the excel file to
output = pd.DataFrame()

output["COUNTRY"] = ""
output['REGION_2D'] = " "
output["Variable"] = ''
output['Key'] = ''
output["AC_Change"] = ''

def func1(geog):

print("------------")
print(geog)
print("------------")
filtered_df = df[df["COUNTRY"].isin([geog])]
filtered_df = filtered_df[filtered_df["Variable"].isin(["people_15_64_W"])]
#filtered_df = filtered_df[filtered_df["variable_category"].isin(['None'])]

#filter through 2018 and summed it up
filtered_2018 = filtered_df[filtered_df["YEAR"].isin(["2018"])]
total_2018 = filtered_2018['value'].sum()
#print(total_2018)
#filter through 2021 and summed it up
filtered_2021 = filtered_df[filtered_df["YEAR"].isin(["2021"])]
total_2021 = filtered_2021['value'].sum()
#print(total_2021)

#AC change calculation
total = total_2018 - total_2021
#print(total)
return total

#iterates through unique values- calls function should print to excel
geo = df['REGION_2D'].unique()
for geog in geo:
funcValue1 = func1(geog)
output.loc[len(output)] = {'REGION_2D': geog,'AC_Change': funcValue1}
#print(output)
output.to_excel('Mock File2.xlsx', index=False)

Вот как я надеялся получить ожидаемый результат:
| COUNTRY | REGION_2D | Value |
| -------- | -------- |
| Austria | 1 |- 19.5321
| Ireland | 4 |- 15.2916


Подробнее здесь: https://stackoverflow.com/questions/787 ... e-whilst-p

Вернуться в «Python»