我有一个数据帧,在各种变量上有多个编码(比如Adress 1="foo",Adress 2="bar"等,其他变量也是如此(。
我想写一个脚本,它可以以"任意Adress="的方式过滤数据帧;foo"并且可以接受要过滤哪个变量的用户输入。有没有办法做到这一点,或者我需要为每个变量单独编写脚本?(我已经有了一个解决方案,我只想有一个更优雅的解决方案(
我的数据框是这样的。
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))]