Python ';指数';对象没有属性';级别';
我有以下命令:Python ';指数';对象没有属性';级别';,python,arrays,pandas,indexing,grouping,Python,Arrays,Pandas,Indexing,Grouping,我有以下命令: def convert_housing_data_to_quarters(): import pandas as pd housing = pd.read_csv('City_Zhvi_AllHomes.csv') housing = housing.drop(housing.columns[6:51],axis=1) times = housing[housing.columns[6:len(housing.columns)]] def
def convert_housing_data_to_quarters():
import pandas as pd
housing = pd.read_csv('City_Zhvi_AllHomes.csv')
housing = housing.drop(housing.columns[6:51],axis=1)
times = housing[housing.columns[6:len(housing.columns)]]
def quarters(col):
if col.endswith(("01","02","03")):
s = col[:4] + "q1"
elif col.endswith(("04", "05", "06")):
s = col[:4] + "q2"
elif col.endswith(("07", "08", "09")):
s = col[:4] + "q3"
else:
s = col[:4] + "q4"
return s
times = times.groupby(quarters,axis=1).mean()
df = pd.concat([times, housing[['State','RegionName']]], axis=1)
arrays = [housing['State'],housing['RegionName']]
index = pd.MultiIndex.from_arrays(arrays)
index = index.sortlevel(level=0)
df = df.reindex(index,level=0)
return df
convert_housing_data_to_quarters()
但是,我不断收到错误消息:
'Index' object has no attribute 'levels'
我正在尝试创建一个层次化多索引,索引顶部有“State”(级别=0),后跟“RegionName”(级别=1)
有谁能帮我一把吗?你不能使用
reindex
,因为没有multi-index
。因此,在聚合之前由两列使用,因此解决方案可能简化:
def convert_housing_data_to_quarters():
import pandas as pd
housing = pd.read_csv('City_Zhvi_AllHomes.csv')
housing = housing.drop(housing.columns[6:51],axis=1)
times = housing[housing.columns[6:len(housing.columns)]]
times = times.set_index(['State','RegionName']).sort_index()
def quarters(col):
if col.endswith(("01","02","03")):
s = col[:4] + "q1"
elif col.endswith(("04", "05", "06")):
s = col[:4] + "q2"
elif col.endswith(("07", "08", "09")):
s = col[:4] + "q3"
else:
s = col[:4] + "q4"
return s
return times.groupby(quarters,axis=1).mean()
convert_housing_data_to_quarters()
也可以将日期转换为四分之一,而不是您的功能:
def convert_housing_data_to_quarters():
housing = pd.read_csv('City_Zhvi_AllHomes.csv')
housing = housing.drop(housing.columns[6:51],axis=1)
times = housing.iloc[:, 6:len(housing.columns)]
times = times.set_index(['State','RegionName']).sort_index()
quarters = pd.to_datetime(times.columns, format='%Y-%m').to_period('Q')
return times.groupby(quarters,axis=1).mean()
这两种解决方案都不会产生层次索引。双索引的第一列应该有状态,第二列应该有按状态分组的区域名称。@Caledonian26-
times=times.set_索引(['state','RegionName'])
不工作?@Caledonian26-或者可能需要times=times.set_索引(['state','RegionName'])。排序_索引()
?是的,后一个有效!times.set_index(['State','RegionName'])。sort_index()