Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种简单的方法可以通过多列的内容过滤Python中的数据帧?_Python_Pandas - Fatal编程技术网

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

有没有一种简单的方法可以通过多列的内容过滤Python中的数据帧?,python,pandas,Python,Pandas,我有一个数据帧,在不同的变量上有多个编码(比如Adress 1=“foo”、Adress 2=“bar”等,其他变量也是如此) 我想写一个脚本,可以用'any address=“foo”'的方式过滤数据帧,并可以接受要过滤的变量的用户输入。有没有办法做到这一点,或者我需要为每个变量分别编写脚本?(我心里已经有了一个解决方案,我只想有一个更为悲壮的解决方案) 我的数据框看起来像这样 Adress 1 Adress 2 Family Name 1 Family Name 2 0 Austi

我有一个数据帧,在不同的变量上有多个编码(比如Adress 1=“foo”、Adress 2=“bar”等,其他变量也是如此)

我想写一个脚本,可以用'any address=“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
创建一个数据帧

df = pd.DataFrame({'Address1':['Austin','Paris', 'Houston'], 'Address2':['New York', 'Austin', 'SF'], 'FamilyName1':['Miller', 'Smith', 'John'], 'FamilyName2':['Baker', 'Yang', 'Peter']})
检查哪些列包含字符串地址,然后验证其中哪些变量的值为“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))]
创建一个数据帧

df = pd.DataFrame({'Address1':['Austin','Paris', 'Houston'], 'Address2':['New York', 'Austin', 'SF'], 'FamilyName1':['Miller', 'Smith', 'John'], 'FamilyName2':['Baker', 'Yang', 'Peter']})
检查哪些列包含字符串地址,然后验证其中哪些变量的值为“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))]

请在示例输入和预期输出的帮助下解释这一点。像这样的表达式
df[(df['A']==1)和(df['B']==2)]
可以完成这项工作。@RuthgerRighart是的,这可以工作,但是我需要为我的每个变量编写一个单独的函数,我希望有一个更简单的解决方案。请在示例输入和预期输出的帮助下对此进行解释。像这样的表达式
df[(df['a']==1)和(df['B']==2)]
可以完成这项工作。@RuthgerRighart是的,这是可行的,但我需要为我的每个变量编写一个单独的函数,我希望有一个更简单的解决办法。