Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从数据透视表中删除重复值?_Python_Excel_Pandas - Fatal编程技术网

Python 如何从数据透视表中删除重复值?

Python 如何从数据透视表中删除重复值?,python,excel,pandas,Python,Excel,Pandas,因此,我试图将excel的一组指令复制到python中。问题是我对excel和正在发生的事情知之甚少 我有一个数据框: no. name corrected no. corrected name 001 alpha 001 alpha 002 beta 002 beta 002 beta2 002 beta 003 gamma 003

因此,我试图将excel的一组指令复制到python中。问题是我对excel和正在发生的事情知之甚少

我有一个数据框:

no.    name    corrected no.    corrected name
001    alpha   001              alpha
002    beta    002              beta
002    beta2   002              beta
003    gamma   003              gamma
004    delta   104              delta
003    omega   003              gamma
...    ...     ...              ...
在excel中,说明是创建一个透视表,其中包含“行”部分中的所有列

我在pandas中的“groupby”和“pivot_table”都做过这项工作

df.groupby(['no.', 'name', 'corrected name'])[['corrected no.']].mean()
or
pd.pivot_table(df[['no.', 'name', 'corrected name', 'corrected no.']], index=['no.', 'name'])
这看起来像:

no.    name    corrected no.    corrected name
001    alpha   001              alpha
002    beta    002              beta
       beta2   002              beta
003    gamma   003              gamma
       omega   003              gamma
004    delta   104              delta
现在,我想从具有多个名称的组中删除所有其他行。e、 g.在这种情况下,我想删除“beta2”和“omega”行

大概是这样的:

no.    name    corrected no.    corrected name
001    alpha   001              alpha
002    beta    002              beta
003    gamma   003              gamma
004    delta   104              delta
所以每个“编号”只有一个“名称”
问题是,一旦我得到“透视表”,它将返回一个无法操作且只有一列的表。

无论哪种方式都有效,但与
groupby
结果一起:

df = pd.read_clipboard(sep='\s{2,}')  # sample rows

s = df.groupby(['no.', 'name', 'corrected name'])[['corrected no.']].mean()

s
Out[27]: 
                          corrected no.
no. name  corrected name               
1   alpha alpha                       1
2   beta  beta                        2
    beta2 beta                        2
3   gamma gamma                       3
    omega gamma                       3
4   delta delta                     104

s.groupby(level=['no.', 'corrected name']).first()
Out[28]: 
                    corrected no.
no. corrected name               
1   alpha                       1
2   beta                        2
3   gamma                       3
4   delta                     104
谢谢我使用了“.first()”,但在第一行中通过切换以下列来处理它:df.groupby(['no.”、'corrected name'、'corrected no.]])[['name']].first()