【发布时间】:2021-09-27 10:41:13
【问题描述】:
我有一个包含 3 列的 DataFrame,它们代表相同的数据(人名)。这些列是Username、BuyerName、TravelerName。在某些情况下,这三列可以共享相同的值(例如,用户名是购买机票并用于旅行的同一个人),我想排除/过滤这些情况。这是我当前的工作代码:
def filter_df(df, user_name):
filtered_df = df.query(f'Username != "{user_name}" & BuyerName != "{user_name}" & TravelerName != "{user_name}")
return filtered_df
我想知道是否有更聪明的方法来执行此查询,而不是在列上一遍又一遍地重复相同的值。
【问题讨论】:
-
df[df[['Username','BuyerName','TravelName']].ne(user_name).all(1)]. -
This answer 提供了一种干净/可读/标准的方法(从熊猫的角度来看)。不过,不得不说上面的@QuangHoang评论很美!
-
谢谢!一个扩展原问题的问题,这个解决方案是否也可以应用于
user_name在三列中至少出现一次时过滤行的情况?