Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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_Multi Index - Fatal编程技术网

Python 如何重新索引数据帧的多索引列?

Python 如何重新索引数据帧的多索引列?,python,pandas,multi-index,Python,Pandas,Multi Index,我有一个熊猫DataFrame,列上有multi-index(假设有3个级别): 当我通过第一级并产生数据帧的子集时: def cluster(df): for key in df.columns.levels[0]: yield df[key] for subdf in cluster(df): print(subdf.columns) 列索引确实丢失了它的第一级,但是多索引仍然包含对子级中所有其他键的引用,即使它们在子集中丢失 MultiIndex(lev

我有一个熊猫
DataFrame
,列上有
multi-index
(假设有3个级别):

当我通过第一级并产生
数据帧的子集时:

def cluster(df):
    for key in df.columns.levels[0]:
        yield df[key]

for subdf in cluster(df):
    print(subdf.columns)
列索引确实丢失了它的第一级,但是
多索引
仍然包含对子级中所有其他键的引用,即使它们在子集中丢失

MultiIndex(levels=[['41B004', '41B005', '41B006', '41B008', '41B011', '41MEU1', '41N043', '41R001', '41R002', '41R012', '41WOL1', '41WOL2', 'T1M001', 'T1M003', 'T1M011'], [25, 26, 27, 28, 30, 31, 32, 3, ....
           labels=[[4, 5, 6, 7, 9, 10], [24, 33, 47, 61, 83, 98]],
           names=['sitekey', 'channelid'])

如何强制subdf的列多索引只使用存在的键进行更新?

df.reset_index()
?这似乎不起作用
def cluster(df):
    for key in df.columns.levels[0]:
        d = df[key]
        d.columns = pd.MultiIndex.from_tuples(d.columns.to_series())
        yield d
def cluster(df):
    for key in df.columns.levels[0]:
        d = df[key]
        d.columns = pd.MultiIndex.from_tuples(d.columns.to_series())
        yield d