如何在Python Dataframe中的混合数据类型对象中筛选字符串值

如何在Python Dataframe中的混合数据类型对象中筛选字符串值,python,pandas,dataframe,Python,Pandas,Dataframe,我在熊猫数据框中有一列,如:(其值_计数如下所示) 如您所见,它包含整数和字母。我必须写一个函数,在这里我必须过滤和搜索字母值 我最初使用pd.read\u excel导入此数据集,但在阅读了多个错误报告后,read\u excel似乎没有将列显式读取为字符串的选项 因此,我尝试使用pd.read_csv进行读取,它具有dtype选项。起初,默认情况下,此列存储为float64,现在即使我尝试运行 Df_name['Admission_Source_Code'] = Df_name['Admis

我在熊猫数据框中有一列,如:(其值_计数如下所示)

如您所见,它包含整数和字母。我必须写一个函数,在这里我必须过滤和搜索字母值

我最初使用pd.read\u excel导入此数据集,但在阅读了多个错误报告后,read\u excel似乎没有将列显式读取为字符串的选项

因此,我尝试使用pd.read_csv进行读取,它具有dtype选项。起初,默认情况下,此列存储为float64,现在即使我尝试运行

Df_name['Admission_Source_Code'] = Df_name['Admission_Source_Code'].astype(int).astype('str')
我无法将其格式化为字符串列

因此,当我过滤

Accepted[Accepted['Admission_Source_Code']==1]
它是有效的,但是

Accepted[Accepted['Admission_Source_Code']=='E']
仍然不返回任何结果。当我试着在掩码中说str(column_name)时,它说的是无效的文本。 有人能帮我修改数据类型或过滤字母值吗

谢谢


注意:即使将格式设置为对象也没有帮助

我认为您应该能够使用
.loc[]
索引器,通过字符串过滤(索引)来过滤您的
值\u计数
系列

演示:

列出索引值:

In [36]: df.index.values
Out[36]: array(['1', '2', '5', '8', '4', '6', '9', 'D', 'E', '0', 'F'], dtype=object)


更新:从Pandas 0.20.1开始

我使用您的示例进行了一些测试,过滤器运行良好,例如:

df = pandas.read_csv('Yourfile.csv')
df['Admission_Source_Code'].value_counts()

1                      246804
2                      135272
5                        8983
8                        3459
4                        3177
6                        1278
9                         522
D                         314
E                          91
0                          29
F                          20    
Name: Admission_Source_Code, dtype: int64
如果我尝试:

print (df[(df['Admission_Source_Code']==1)])
我得到:

Empty DataFrame
Columns: [Admission_Source_Code]
Index: []
但是使用
列表压缩

df['Admission_Source_Code'] = [str(i) for i in df['Admission_Source_Code']]
使用数据示例:

如果问题仍然存在,您是否考虑过csv列中的干净项?(即空白)

例如,使用相同的
列表压缩
条带()


你试过列表压缩吗?例如:
Df_name['Admission_Source_code']=[str(i)for i in Df_name['Admission_Source_code']]
?@estebanpdl:列表理解似乎只起了部分作用。我想上传一张图片,这样你就可以在我发布的答案中看到发生了什么。我不明白为什么会这样。感谢您的帮助,如果我正在筛选值_计数系列,ix或loc方法肯定会起作用。谢谢你。但在编写函数时,我试图过滤数据帧本身。下面是我试图对该专栏进行列表理解时发生的情况。我很抱歉,但我不得不上传图像输出,这已经作为一个答案张贴。
Empty DataFrame
Columns: [Admission_Source_Code]
Index: []
df['Admission_Source_Code'] = [str(i) for i in df['Admission_Source_Code']]
df['Admission_Source_Code'] = [str(i.strip()) for i in df['Admission_Source_Code']]