当数据透视失败并出现 ValueError 时查找违规条目:索引包含重复条目,无法重塑

问题描述 投票:0回答:1

我有一个包含 3 列和数据类型的数据框:Datetime (Datetime dtype)Area (string)Value (float)

我想旋转它,以便为区域中的每个唯一条目获得单独的列。

df_pivot = pd.pivot(df,index='Datetime',columns='Area','values='Value')

现在我收到以下错误

ValueError: Index contains duplicate entries, cannot reshape.

我删除重复项而不进行子集化,然后重试,但得到相同的结果。

我尝试找到有问题的条目,但没有成功:

duplicates = df[df.duplicated(subset=['Datetime','Area','Value'], keep=False)]

这将返回一个空数据框

所以我尝试重置索引并使用下一个索引重复子集:

duplicates = df[df.duplicated(subset=['Datetime','Area','Value','index'], keep=False)]

我得到了相同的结果,一个空的数据框和一个不可旋转的 df。

还有其他方法可以找到有问题的条目吗?

python pandas pivot
1个回答
0
投票

您需要查找每个

Datetime
Area
的重复项,而不是所有 3 列:

df = pd.DataFrame(
    {
    "Datetime" : [1,1,2,3,3],
    "Value" : [1,2,3,4,5],
    "Area" : ["D", "D", "D", "E", "E"]
    }
 )


duplicates = df[df.duplicated(subset=['Datetime','Area'], keep=False)]
print (duplicates)
   Datetime  Value Area
0         1      1    D
1         1      2    D
3         3      4    E
4         3      5    E
© www.soinside.com 2019 - 2024. All rights reserved.