【问题标题】:Pandas DataFrame reindex column issuePandas DataFrame 重新索引列问题
【发布时间】:2012-10-09 09:21:49
【问题描述】:

过去几个小时我一直在尝试解决这个问题......

我有一个列表,我想用作 DataFrame 的列:

totalColumns = [a, b, c, d, e, f.....z]

我有几个看起来像这样的数据框:

DataFrameOne:

    b   f   j
1   12  5   6
2   4   99  2
3   10  77  16

DataFrameTwo:

    a   k   y
1   2   25  46
2   7   54  76
3   34  67  101
4   45  24  54

还有更多...

我想根据 totalColumns 重新索引所有数据框。例如,重新索引后,DataFrameOne 将如下所示:

DataFrameOne:

    a    b   c......f.....j......z
1   NaN  5   NaN....5.....6......NaN
2   NaN  99  NaN....99....2......NaN
3   NaN  77  NaN....77....16.....NaN

所以我使用了reindex方法:

DataFrameOne.reindex(columns=totalColumns)

它适用于某些数据帧,但对于某些数据帧我会遇到此异常:

raise Exception('Reindexing only valid with uniquely valued Index '
Exception: Reindexing only valid with uniquely valued Index objects

谁能帮我解决在某些数据帧上发生的这个错误?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    两个 DataFrame 中是否有重复的列?如果是,请尝试将其解决为在两个框架中具有唯一的列名,然后再次执行重新索引。

    【讨论】:

    • 啊,我认为这可能是问题所在。如何将具有相同标签的两列连接在一起并根据各自的行索引汇总它们的数字?
    • 我很好奇:您是如何设法在 DataFrame 中创建重复列的?我只能通过在 totalColumns 列表中重复列 names 来重现您的错误...
    • 最初我的所有列名都是唯一的,以字符串作为 ID,但后来我需要将每个唯一 ID 更改为日期(仍为字符串格式)作为列标签。一些列 ID 对应于相同的日期。我使用 dataframe.columns = list 写入新的列标签。
    • 尝试 df.groupby(axis=1, level=0).sum() 对同名的列进行分组求和
    • 当存在重复列时,merge() 操作也可能发生“异常:重新索引仅对唯一值索引对象有效”形式的重新索引错误。上面的评论很有帮助。
    猜你喜欢
    • 2013-09-23
    • 2017-03-02
    • 2019-03-21
    • 2017-08-07
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    相关资源
    最近更新 更多