ValueError:对于orient ='columns',DataFrame索引必须是唯一的

时间:2015-03-26 05:12:31

标签: python pandas

我将许多数据框合并为更大的数据框,

pd.concat(dfs, axis=0)

然后我可以将其转储到 json

(Pdb) df.to_json()
*** ValueError: DataFrame index must be unique for orient='columns'.

我该如何解决?

5 个答案:

答案 0 :(得分:7)

该错误表示您的数据框索引具有非唯一(重复)值。由于您似乎没有使用索引,因此可以使用以下命令创建一个新索引:

df.reset_index()

请参阅http://pandas.pydata.org/pandas-docs/stable/indexing.html#set-reset-index

答案 1 :(得分:4)

Pandas提供了不同的策略来格式化JSON中的数据。 'orient'参数有5个允许值,如下所述:Pandas IO tools documentation。 “索引”和“列”策略需要唯一索引,而其他索引则不需要。

如果您有主键可以修改DataFrame的索引,则可以使用另一种解决方案。 例如

df = df.set_index(['col1', 'col2'])

此处示例:Set multi column index in pandas

答案 2 :(得分:0)

就我而言,我的pandas DataFrame中有重复的列。我从对两列进行联接的SQL查询中读取,这是允许的,但是当您要创建JSON时会出现问题。删除列:

df = df.drop(columns="duplicate_column")

或者简单地重命名它们

df.rename(index=str, columns={"duplicate_column": "duplicate_column_2"})

在我使用SQL的情况下,最好将查询更改为不返回您要加入的重复列。

答案 3 :(得分:0)

可以尝试删除重复项。

object.onscroll = function(){myScript};

答案 4 :(得分:-1)

这对我有用:

df.to_json(orient="split")