我正在尝试计算一个国家/地区两个不同年份之间的绝对变化 - 我在下面编写的代码是我为了完成此任务而创建的函数。但是我有...
我正在尝试计算一个国家两个不同年份之间的绝对变化 - 我下面编写的代码是我为了完成此任务而创建的函数。但是,我在将计算结果打印到我创建的 excel 文件中时遇到了问题。
运行代码时,仅填充了输出 Excel 文件上的“国家/地区”列,而不是“AC 更改”列,我不确定问题是什么,为什么结果仅打印到一列而不打印到另一列。
这是包含我尝试分析的 Excel 文件的数据框的示例。
df = pd.DataFrame({'Country': ['Austria', 'Austria'],
'REGION_2D': ['AT10', 'AT10'],
'Variable': ['ILOSTAT_W', 'ILOSTAT_W'],
'variable_type':[1, 1],
'value': [1798.52, 1804.577],
'YEAR': [2018, 2021]})
这是我为其开发的代码。如能得到任何帮助我将非常感激。
import pandas as pd
import openpyxl as op
df = pd.read_excel(r"C:\Users\blakecar\PycharmProjects\LFS Data\Mock File LFS.xlsx", sheet_name='Sheet1')
output = pd.DataFrame()
output["Country"] = ""
output["Region"] = ""
output["AC_Change"] = ''
def func1(geog):
print("------------")
print(geog)
print("------------")
filtered_df = df[df["COUNTRY"].isin([geog])]
filtered_df = filtered_df[filtered_df["REGION_2D"].isin(["AT10"])]
filtered_df = filtered_df[filtered_df["Variable"].isin(["ILOSTAT_W"])]
filtered_2018 = filtered_df[filtered_df["YEAR"].isin(["2018"])]
total_2018 = filtered_2018['value'].sum()
filtered_2021 = filtered_df[filtered_df['YEAR'].isin(["2021"])]
total_2021 = filtered_2021['value'].sum()
return total_2018 - total_2021
geo = df['COUNTRY'].unique()
for geog in geo:
funcValue = func1(geog)
output.loc[len(output)] = {"Country": geog, 'AC_change':funcValue}
output.to_excel('Mock File.xlsx', index=False)
我希望得到的输出是我在代码函数中所做计算的结果,所以它看起来像这样:
国家
|
Ac_Change
|
奥地利
|
2018 - 2021
|
|
|