Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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_Python 3.x_Pandas_Sorting_Filter - Fatal编程技术网

Python &引用;及;函数在字符串中的位置

Python &引用;及;函数在字符串中的位置,python,python-3.x,pandas,sorting,filter,Python,Python 3.x,Pandas,Sorting,Filter,我对python还相当陌生,我一直在尝试使用pandas来处理python,这在excel中很难完成 我一直在尝试编写代码,根据字符串和字母的位置数过滤数据 到目前为止,我有以下几点 import pandas as pd df = pd.read_excel (r'C:\Users\Main\Desktop\dataset.xlsx') df.loc[df['Name'].str[1]=='a'] & df.loc[df['Name'].str[2]=='x'] 我试图做的是根据名称

我对python还相当陌生,我一直在尝试使用pandas来处理python,这在excel中很难完成

我一直在尝试编写代码,根据字符串和字母的位置数过滤数据

到目前为止,我有以下几点

import pandas as pd
df = pd.read_excel (r'C:\Users\Main\Desktop\dataset.xlsx')
df.loc[df['Name'].str[1]=='a'] & df.loc[df['Name'].str[2]=='x']
我试图做的是根据名称获取行。 换句话说,程序通过“Name”列进行过滤,如果第二个字母是“a”,第三个字母是“x”,那么它应该打印过滤后的行

现在,我应该说,当我只使用“a”时,这很好用 所以,当我的代码看起来像下面的代码时,程序就工作了

import pandas as pd
df = pd.read_excel (r'C:\Users\Main\Desktop\dataset.xlsx')
df.loc[df['Name'].str[1]=='a'] 
当我为附加过滤器添加“&”符号时,我遇到了麻烦


任何建议都会有帮助。我对这方面还不太熟悉,所以任何建议都将不胜感激。我试图通过for循环解决这个问题,但我认为我上面采用的方法稍微好一些。

在使用
&
运算符时,必须确保正确使用括号:

$df=pd.DataFrame(数据=[''u ab','u ax','u xy','abcd'],列=['Name'])
$df
名称
0_ab
1_ax
2_xy
3 abcd
#正确的括号很重要!:
$df.loc[(df.Name.str[1]='a')&(df.Name.str[2]='x')]
名称
1_ax

Try:
df[df['Name'].str[1]='a'&df['Name'].str[3]='a']]
您可能需要将测试用括号括起来,以确保它们按预期顺序排列。
[(测试1)和(测试2)]
@vedbrambhatt您为什么要创建新帐户来提问?几小时前,你在早上问了一个类似的问题。你不会给正确回答你问题的人任何分数。这不好。嘿,鲍勃,谢谢。这很有效。不过我确实有一个问题。我想知道为什么我用“.int”或“.float”替换“.str”不起作用。我用另一个包含整数的列尝试了这一点,并将str改为integer,但它不起作用,我想知道您是否可以为我指出正确的方向。简单的回答是str的处理方式不同于int/float。有关str访问器的更多信息,请访问此处的pandas文档:。对于int/float列,您不需要访问器,只需处理这些列即可。(
df.a>3
例如)