如何在Python中使用会计年度值?

2024-05-16 22:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究加拿大财政转移支付的一些历史数据。下载的数据采用会计年度格式,即

Year     Quebec  Alberta
1980-1981   2000    4000
1981-1982   3000    6000

我正在使用熊猫图书馆。但是,当我尝试使用matplot或sns进行任何可视化时,它会生成一个错误,要么不将“Year”识别为数值,要么(“DataFrame”对象没有属性“Year”)。但是,当我将csv中的值更改为一年时,即

Year     Quebec  Alberta
1980    2000    4000
1981    3000    6000

它工作得非常好。Python是否有办法将1980-1981财年的值与正常年份一样对待。任何建议都将不胜感激


Tags: 数据dataframe图书馆可视化格式错误year数值
1条回答
网友
1楼 · 发布于 2024-05-16 22:24:48

您可以使用2年periods,但如果打印数据框列看不到年底:

print (df)
   Year  Quebec  Alberta
0  1980    2000     4000
1  1981    3000     6000
    
df['Year'] =  df['Year'].apply(lambda x: pd.Period(x, freq='2A-DEC'))

print (df['Year'])
0    1980
1    1981
Name: Year, dtype: period[2A-DEC]

print (df['Year'].dt.to_timestamp('A', how='s'))
0   1980-12-31
1   1981-12-31
Name: Year, dtype: datetime64[ns]

print (df['Year'].dt.to_timestamp('A', how='e'))
0   1981-12-31 23:59:59.999999999
1   1982-12-31 23:59:59.999999999
Name: Year, dtype: datetime64[ns]

但我认为最简单的方法是为年初和年末创建两列:

print (df)
        Year  Quebec  Alberta
0  1980-1981    2000     4000
1  1981-1982    3000     6000

df[['StartYear','EndYear']] = df['Year'].str.split('-', expand=True).astype(int)
print (df)
        Year  Quebec  Alberta  StartYear  EndYear
0  1980-1981    2000     4000       1980     1981
1  1981-1982    3000     6000       1981     1982

相关问题 更多 >