如何重塑数据帧(列中的不同类型)

2024-07-01 07:10:04 发布

您现在位置:Python中文网/ 问答频道 /正文

关于这个话题,我看到了许多不同的答案。在我的情况下,情况有点不同,我有以下数据帧

     A    B      C  
0  OPXXX  OPT1 70
1  OPXXX  OPT2 KO
2  OPXXX  OPT3 KO
3  OPXXX  OPT4 B
4  OPXXX  OPT5 175000
5  OPXXX  OPT6 Europ
6  OPXXX  OPT7 2019-01-21
7  OPXXX  OPT8 2019-05-21
8  OPXXX  OPT9 2019-10-21

我很想这样,但问题是数据透视表由于聚合功能而无法工作:

 A     OPT1  OPT2 OPT3 OPT4 OPT5   OPT6         OPT7       OPT8         OPT9    
OPXXX   70     KO    KO   B 175000  Europe    2019-01-21  2019-10-21  2019-10-21      

当我这样做时:测向枢轴(索引='A',值='C',列='B')

我有以下错误

Traceback (most recent call last): File "C:/Users/V002697/PycharmProjects/portia/tiaex.py", line 17, in print(df.pivot(index='ticker',values='value', columns= 'field')) File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py", line 3853, in pivot return pivot(self, index=index, columns=columns, values=values) File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\reshape\reshape.py", line 378, in pivot return indexed.unstack(columns) File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\series.py", line 2028, in unstack return unstack(self, level, fill_value) File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\reshape\reshape.py", line 458, in unstack fill_value=fill_value) File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\reshape\reshape.py", line 110, in init self._make_selectors() File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\reshape\reshape.py", line 148, in _make_selectors raise ValueError('Index contains duplicate entries, ' ValueError: Index contains duplicate entries, cannot reshape

我想知道你有什么想法?你知道吗

谢谢


Tags: inpycorepandaslibpackageslinesite
2条回答

您可以使用pandas.DataFrame.pivot

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

B     OPT1 OPT2 OPT3 OPT4    OPT5   OPT6        OPT7        OPT8        OPT9
A                                                                           
OPXXX   70   KO   KO    B  175000  Europ  2019-01-21  2019-05-21  2019-10-21

df1=df.重命名(列={'A':'A1','B':'B1','A1':'A2','B1':'B2'}) pd.宽\u到长\u(df1,stubnames=['A','B'],i='index',j='id')\ .reset_index()[['A','B','id']]

A   B id

0 1 2 1 1 5 6 1 2 9 10 1 3 3 4 2 4 7 8 2 5 11 12 2

相关问题 更多 >

    热门问题