有没有一种简单的方法可以通过多列的内容在Python中过滤数据帧



我有一个数据帧,在各种变量上有多个编码(比如Adress 1="foo",Adress 2="bar"等,其他变量也是如此(。

我想写一个脚本,它可以以"任意Adress="的方式过滤数据帧;foo&quot并且可以接受要过滤哪个变量的用户输入。有没有办法做到这一点,或者我需要为每个变量单独编写脚本?(我已经有了一个解决方案,我只想有一个更优雅的解决方案(

我的数据框是这样的。

Adress 1    Adress 2 Family Name 1 Family Name 2
0   Austin    New York        Miller         Baker
1    Paris      Austin         Smith          Yang
2  Detroit  Kopenhagen         Baker         Smith

我想让用户能够要求像Adress=Austin这样的过滤器,并且输出看起来像:

Adress 1    Adress 2 Family Name 1 Family Name 2
0   Austin    New York        Miller         Baker
1    Paris      Austin         Smith          Yang

创建一个DataFrame。

df = pd.DataFrame({'Address1':['Austin','Paris', 'Houston'], 'Address2':['New York', 'Austin', 'SF'], 'FamilyName1':['Miller', 'Smith', 'John'], 'FamilyName2':['Baker', 'Yang', 'Peter']})

请检查哪些列包含字符串Address,然后验证其中哪些变量的值为"Austin"。

ndf = df.loc[:, list(df.columns[df.columns.str.contains(pat = 'Address')])] == 'Austin'

如果一行包含True,则汇总到列表中。

list(ndf.any(1))

选择包含True的行,在本例中为Austin:

df[list(ndf.any(1))]

最新更新