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