Python 如何从数据透视表中删除重复值?
因此,我试图将excel的一组指令复制到python中。问题是我对excel和正在发生的事情知之甚少 我有一个数据框: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
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()