首页 > 解决方案 > 从数据框中选择列不采用列表中的值之一的行

问题描述

我有一个值列表,它是特定列可以采用的所有值的子集:

list1=['DHL','FDX','UPS','USPS','Others']

根据用于装运的运输公司的价值,我可以选择行(例如):

df2=df1[df1['ShippingCompany']=='DHL']

现在,我需要选择“Others”,其中行对应于“Others”之前列出的航运公司以外的所有航运公司。我如何做到这一点而不必写一个长链?请注意,list1 内容可以在调用之间更改,客户可以在“其他”之前添加其他值。

我正在考虑以下元代码:

df2=df1[df1['ShippingCompany'] is not in list1[:-1]]

这在 Python 中可能吗?

标签: pandasdataframe

解决方案


你有isin==

df2=df1[df1['ShippingCompany'] == list1[-1]]

超过两个值

df2=df1[~df1['ShippingCompany'].isin(list1[:-1])]

推荐阅读