我有一个包含三个字符串列的数据框.我知道第3列中唯一的一个值对前两个的每个组合都有效.要清理数据,我必须按数据框前两列进行分组,并为每个组合选择第三列的最常见值.
我的代码:
import pandas as pd
from scipy import stats
source = pd.DataFrame({'Country' : ['USA', 'USA', 'Russia','USA'],
'City' : ['New-York', 'New-York', 'Sankt-Petersburg', 'New-York'],
'Short name' : ['NY','New','Spb','NY']})
print source.groupby(['Country','City']).agg(lambda x: stats.mode(x['Short name'])[0])
Run Code Online (Sandbox Code Playgroud)
最后一行代码不起作用,它说"键错误'短名称'",如果我尝试仅按城市分组,那么我得到一个AssertionError.我该怎么办呢?
我有一个pandas数据帧如下:
A B C
1 2 x
1 2 y
3 4 z
3 5 x
Run Code Online (Sandbox Code Playgroud)
我希望在特定列中只有一行共享相同值的行.在上面的例子中,我指的是A列和B列.换句话说,如果列A和B的值在数据帧中出现不止一次,则只应保留一行(哪一行无关紧要).
FWIW:所谓的重复行的最大数量(即,列A和B相同)是2.
结果应该像这样说:
A B C
1 2 x
3 4 z
3 5 x
Run Code Online (Sandbox Code Playgroud)
要么
A B C
1 2 y
3 4 z
3 5 x
Run Code Online (Sandbox Code Playgroud)