pandas.concat:无法处理非唯一的多索引!熊猫蟒

Posted

技术标签:

【中文标题】pandas.concat:无法处理非唯一的多索引!熊猫蟒【英文标题】:pandas.concat: Cannot handle a non-unique multi-index! Pandas Python 【发布时间】:2015-11-06 00:29:27 【问题描述】:

我正在尝试使用以下代码连接 100 个具有 2 个日期时间索引的数据帧:

concat_df = pd.concat([df_dict[c] for c in df_dict], axis = 1)

但是某个数据帧之一(我假设它是一个,但可能更多)导致发生以下异常:

Exception: cannot handle a non-unique multi-index!

有什么想法吗?

是指第一个索引还是第二个索引?

【问题讨论】:

出于好奇concat_df = pd.concat(list(df_dict.values()), axis = 1),这行得通吗? 不,同样的错误...谢谢 这可能是concat 的一些限制,可能不是错误,而是您必须决定如何合并/对齐数据 data.unstack('k1').duplicated('k1').any() 试试这个,其中data 是单个数据框,k1 是索引名称 不要在问题中回答你的问题。将答案作为答案发布。 【参考方案1】:

我发现它指的是我的解决方案的第一个索引:(我不确定它的效率如何,但 concat 之后可以工作)

dup_first_index_dates = np.where(np.array([np.sum(df_dict[c].index.duplicated()) for c in df_dict]) == 1)[0]
key = df_dict.keys()
for i in dup_first_index_dates :
    df_dict[key[i]] = df_dict[tickers[i]].reset_index().drop_duplicates('Level1').set_index(['Level1', 'Level2'])

【讨论】:

【参考方案2】:

concat 中的以下选项 ignore_index=True 可能会有所帮助。

不确定这是否可以如下使用:

concat_df = pd.concat([df_dict[c] for c in df_dict], axis = 1,ignore_index=True)

试试吧!

【讨论】:

以上是关于pandas.concat:无法处理非唯一的多索引!熊猫蟒的主要内容,如果未能解决你的问题,请参考以下文章

数据框划分后,熊猫样式无法在多索引上设置背景渐变

无法正确组合多索引列(3 级)

保存多索引 csv 文件时如何正确处理命名索引?

Pandas:如何向多索引数据框添加列?

何时在 pandas 中使用多索引与 xarray

如何修改boost多索引的只读元素?