Python 在Pandas中旋转-ValueError:索引包含重复的项,无法重塑形状

Python 在Pandas中旋转-ValueError:索引包含重复的项,无法重塑形状,python,pandas,pivot,Python,Pandas,Pivot,我对python和pandas非常陌生,我正在尝试转换一些数据。 我有一个包含三列的数据集,如下所示: A B C col1 21-03-2019 1.2 col2 21-03-2019 23 col3 21-03-2019 45 col4 21-03-2019 2.4 col5 21-03-2019 78 col1 14-07-2019 0.1 col2

我对python和pandas非常陌生,我正在尝试转换一些数据。 我有一个包含三列的数据集,如下所示:

A       B               C
col1    21-03-2019      1.2
col2    21-03-2019      23
col3    21-03-2019      45
col4    21-03-2019      2.4
col5    21-03-2019      78
col1    14-07-2019      0.1
col2    14-07-2019      AM
col3    14-07-2019      CDM
col4    14-07-2019      66
col5    14-07-2019      0.1
A       B               C
col1    21-03-2019      1.2
col2    21-03-2019      23
col3    21-03-2019      45
col4    21-03-2019      2.4
col5    21-03-2019      78
col1    21-03-2019      0.1
col2    21-03-2019      AM
col3    21-03-2019      CDM
col4    21-03-2019      66
col5    21-03-2019      0.1
我正在使用B作为索引来透视数据帧,透视表工作得很好

import pandas as pd 

# creating a dataframe 
df = pd.DataFrame({'A': ['col1', 'col2', 'col3', 'col4', 'col5', 'col1', 'col2', 'col3' ,'col4', 'col5'], 
      'B': [21-03-2019,21-03-2019,21-03-2019,21-03-2019,21-03-2019, 14-07-2019,14-07-2019,14-07-2019,14-07-2019,14-07-2019], 
      'C': [1.2, 23, 45, 2.4, 78, 0.1, 'AM', 'CDM', 66, 0.1]}) 

df.pivot(index='B', columns='A', values='C')



A            col1 col2 col3 col4 col5
B                           
21-03-2019  1.2   23   45   2.4   78
14-07-2019  0.1   AM   CDM  66    0.1
但在我的dataframe中,所有记录的B列都是相同的,如下所示:

A       B               C
col1    21-03-2019      1.2
col2    21-03-2019      23
col3    21-03-2019      45
col4    21-03-2019      2.4
col5    21-03-2019      78
col1    14-07-2019      0.1
col2    14-07-2019      AM
col3    14-07-2019      CDM
col4    14-07-2019      66
col5    14-07-2019      0.1
A       B               C
col1    21-03-2019      1.2
col2    21-03-2019      23
col3    21-03-2019      45
col4    21-03-2019      2.4
col5    21-03-2019      78
col1    21-03-2019      0.1
col2    21-03-2019      AM
col3    21-03-2019      CDM
col4    21-03-2019      66
col5    21-03-2019      0.1
在这种情况下,pivot失败,出现以下错误:

ValueError:索引包含重复的条目,无法重塑

我尝试重置索引(虽然我不知道重置索引意味着什么)
df.pivot(index='B',columns='B',values='C')。重置索引('B')

我的预期产出是:

A           col1  col2 col3 col4  col5
B                           
21-03-2019  1.2   23   45   2.4   78
21-03-2019  0.1   AM   CDM  66    0.1

我怎样才能解决这个问题?有人能帮我吗?

如果每个组都有
col1
,首先可以通过比较值和累计和来创建helper列
g

对于无聚合解决方案,请使用:

或按第一个值进行聚合时,可使用:

最后一个是可以删除多索引级别的帮助程序

df1 = df1.reset_index(level=1, drop=True)
print (df1)
A          col1 col2 col3 col4 col5
B                                  
21-03-2019  1.2   23   45  2.4   78
21-03-2019  0.1   AM  CDM   66  0.1

如果每个组都存在
col1
,并且首先可以通过比较值和累计和来创建辅助列
g

对于无聚合解决方案,请使用:

或按第一个值进行聚合时,可使用:

最后一个是可以删除多索引级别的帮助程序

df1 = df1.reset_index(level=1, drop=True)
print (df1)
A          col1 col2 col3 col4 col5
B                                  
21-03-2019  1.2   23   45  2.4   78
21-03-2019  0.1   AM  CDM   66  0.1

在这种情况下,您希望如何聚合
C
?您好@LearneR,欢迎使用Python/Pandas!要了解有关重置索引之类的更多信息,您可能会发现这很有用。@yatu:我并不真正希望C进行任何聚合。我只希望值显示为-is。Panda的一个问题是,它不知道使用什么逻辑来组合行,因为
B
对所有行都是相同的。第一个
col1
与第二个有什么区别?在第一个数据帧中,是
B
的不同值,但在第二个数据帧中,Pandas不确定该做什么。您是否总是希望以五人一组为中心?您能解释一下底层逻辑吗?在这种情况下,您希望如何聚合
C
?您好@LearneR,欢迎使用Python/Pandas!要了解有关重置索引之类的更多信息,您可能会发现这很有用。@yatu:我并不真正希望C进行任何聚合。我只希望值显示为-is。Panda的一个问题是,它不知道使用什么逻辑来组合行,因为
B
对所有行都是相同的。第一个
col1
与第二个有什么区别?在第一个数据帧中,是
B
的不同值,但在第二个数据帧中,Pandas不确定该做什么。您是否总是希望以五人一组为中心?你能解释一下基本的逻辑吗?非常感谢你提供这个解决方案。我使用了带有
set\u index()
unstack()
的一个,它对我所有的数据集都非常有效。我真的需要深入研究熊猫。如果没有你的回应,我自己也不会想到这个解决方案。再次感谢。非常感谢您的解决方案。我使用了带有
set\u index()
unstack()
的一个,它对我所有的数据集都非常有效。我真的需要深入研究熊猫。如果没有你的回应,我自己也不会想到这个解决方案。再次感谢。