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

时间:2017-04-10 15:15:02

标签: 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              gamma
004    delta   104              delta
003    omega   003              gamma
...    ...     ...              ...

在excel中,说明说要创建一个包含“ROWS”部分中所有列的数据透视表。

我在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

现在我想从具有多个名称的组中删除所有其他行。例如在这种情况下,我想删除'beta2'& 'omega'行;

类似的东西:

no.    name    corrected no.    corrected name
001    alpha   001              alpha
002    beta    002              beta
003    gamma   003              gamma
004    delta   104              delta

所以每个'没有'只有一个'名字'。 问题是,一旦我得到'数据透视表',它就会返回一个无法操作的表,只有一列。

1 个答案:

答案 0 :(得分:1)

以任何方式工作,但使用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