首页 > 解决方案 > 根据另一列的值从一列中选择值 - python

问题描述

我有一个df1看起来像这样的大数据框:

DeviceID     Location
1            Internal
1            External   
2            Internal   
2            Internal   
3            Internal   
3            External   
3            Internal
4            Internal   
4            Internal
5            External   
5            Internal   

我正在尝试查找并选择在列中DeviceID同时记录了“内部”和“外部”值的单行Location

下一步是从数据框中删除这些行。最终的数据框df2如下所示:

DeviceID     Location
2            Internal   
2            Internal   
4            Internal   
4            Internal   

到目前为止,我尝试的是: indexDI = df[(df['Location'] == 'Internal') & df['Location'] == 'External') ].index df.drop(indexDI, inplace = True)

但这似乎必须删除所有带有“内部”的行。

任何帮助,将不胜感激 :)

标签: pythonpandas

解决方案


您可以使用groupby来查看哪些组包含两个不同的值并使用结果对数据帧执行布尔索引:transformnunique

df[df.groupby('DeviceID').Location.transform('nunique').eq(1)]

     DeviceID  Location
2         2  Internal
3         2  Internal
7         4  Internal
8         4  Internal

reset_index(drop=True)熊猫的简单添加RangeIndex


推荐阅读