我想创建一个多索引数据框,以便以更有条理的方式计算值。
我知道有一个更优雅的解决方案,但我很难找到它。我发现的大部分内容都涉及序列和元组。我对熊猫(和编程)相当陌生,这是我第一次尝试使用/创建多索引。
在将人口普查数据下载为 csv 并使用相关字段创建数据框后,我有:
county housingunits2010 housingunits2012 occupiedunits2010 occupiedunits2012
8001 120 200 50 100
8002 100 200 75 125
我想结束:
id Year housingunits occupiedunits
8001 2010 120 50
2012 200 100
8002 2010 100 75
2012 200 125
然后能够从计算值(即年份之间的差异,百分比变化)和其他数据框中添加列,匹配县和年份的合并。
我想出了一个使用我学到的基本方法的解决方法(见下文),但是......它肯定不优雅。任何建议将不胜感激。
首先创建两个差异数据框
df3 = df2[["county_id","housingunits2012"]]
df4 = df2[["county_id","housingunits2010"]]
添加年份列
df3['year'] = np.array(['2012'] * 7)
df4['year'] = np.array(['2010'] * 7)
df3.columns = ['county_id','housingunits','year']
df4.columns = ['county_id','housingunits','year']
追加
df5 = df3.append(df4)
写入 csv
df5.to_csv('/Users/ntapia/df5.csv', index = False)
阅读和排序
df6 = pd.read_csv('/Users/ntapia/df5.csv', index_col=[0, 2])
df6.sort_index(0)
结果(实际数据):
housingunits
county_id year
8001 2010 163229
2012 163986
8005 2010 238457
2012 239685
8013 2010 127115
2012 128106
8031 2010 285859
2012 288191
8035 2010 107056
2012 109115
8059 2010 230006
2012 230850
8123 2010 96406
2012 97525
谢谢!