Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中使用会计年度值?_Python_Pandas_Dataframe_Data Visualization - Fatal编程技术网

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

如何在Python中使用会计年度值?,python,pandas,dataframe,data-visualization,Python,Pandas,Dataframe,Data Visualization,我正在研究加拿大财政转移支付的一些历史数据。下载的数据采用会计年度格式,即 Year Quebec Alberta 1980-1981 2000 4000 1981-1982 3000 6000 Year Quebec Alberta 1980 2000 4000 1981 3000 6000 我正在使用熊猫图书馆。但是,当我尝试使用matplot或sns进行任何可视化时,它会生成一个错误,要么不将“Year”识别为数值,要么(

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

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

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

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

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  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

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

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  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
您可以使用2年,但如果打印数据框列看不到年底:

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  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

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

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  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

伟大的非常感谢。伟大的非常感谢。