Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Pandas_Indexing_Grouping - Fatal编程技术网

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