所以我试图将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
所以每个'没有'只有一个'名字'。 问题是,一旦我得到'数据透视表',它就会返回一个无法操作的表,只有一列。
答案 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