发现至少存在两组的值

发现至少存在两组的值

我有一个这样的多索引数据框:

                            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


我如何分割该df,以仅查看为不同公司工作的驱动程序?所以结果应该是这样的:

                            Distance
Company Driver Document_id
Salt    Fred   1               592.0
               2               550.0
Bricks  Fred   40              449.0


UPD:我的原始数据帧长400k,所以我不能仅按索引对其进行切片。我正在尝试找到解决此类问题的一般解决方案。

最佳答案

要获取某人曾经工作过的唯一公司的数量,请使用groupbyunique

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

关于python - Pandas 发现至少存在两组的值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53804145/

10-11 07:50