Python 大熊猫发现至少有两组存在值
我有这样一个多索引数据帧:Python 大熊猫发现至少有两组存在值,python,pandas,dataframe,group-by,multi-index,Python,Pandas,Dataframe,Group By,Multi Index,我有这样一个多索引数据帧: Distance Company Driver Document_id Salt Fred 1 592.0 2 550.0 John 3 961.0 4 346.0 Bricks James
Distance
Company Driver Document_id
Salt Fred 1 592.0
2 550.0
John 3 961.0
4 346.0
Bricks James 10 244.0
20 303.0
30 811.0
Fred 40 449.0
James 501 265.0
Sand Donald 15 378.0
800 359.0
Distance
Company Driver Document_id
Salt Fred 1 592.0
2 550.0
Bricks Fred 40 449.0
我如何分割df以只看到为不同公司工作的司机?所以结果应该是这样的:
Distance
Company Driver Document_id
Salt Fred 1 592.0
2 550.0
John 3 961.0
4 346.0
Bricks James 10 244.0
20 303.0
30 811.0
Fred 40 449.0
James 501 265.0
Sand Donald 15 378.0
800 359.0
Distance
Company Driver Document_id
Salt Fred 1 592.0
2 550.0
Bricks Fred 40 449.0
UPD:我的原始数据帧是400k长的,所以我不能仅仅通过索引对其进行切片。我正试图找到解决此类问题的通用解决方案。要获得一个人为之工作过的独特公司的数量,请使用
groupby
和unique
:
v = (df.index.get_level_values(0)
.to_series()
.groupby(df.index.get_level_values(1))
.nunique())
# Alternative involving resetting the index, may not be as efficient.
# v = df.reset_index().groupby('Driver').Company.nunique()
v
Driver
Donald 1
Fred 2
James 1
John 1
Name: Company, dtype: int64
现在,您可以运行查询:
names = v[v.gt(1)].index.tolist()
df.query("Driver in @names")
Distance
Company Driver Document_id
Salt Fred 1 592.0
2 550.0
Bricks Fred 40 449.0
@AndreyGoloborodko\m/和
query
是一个非常强大的API,我正在尝试推广。如果你有兴趣了解更多信息,我邀请你浏览我最近写的关于query
和eval
@coldspeed,great post,++ve为你的query doc post干杯。