【发布时间】:2018-12-22 21:45:00
【问题描述】:
在发布之前,我已检查以下内容以获得帮助: converting to float 和 null values
据我所知,我没有任何空值。
为了检查空值,我这样做了:
null_columns = df_every_page.columns[df_every_page.isnull().any()]
print(df_every_page[df_every_page.isnull().any(axis=1)][null_columns].head())
这是回来的:
0 object
dtype: object
Empty DataFrame
Columns: []
Index: []
在查找 null 值之前,我执行了print(df_every_page) 以确保它不是空列。此列中有值。
有什么建议吗?
编辑#1:
我得到的确切错误信息是这样的:
只能使用带有字符串值的 .str 访问器,它使用 np.object_ 大熊猫中的数据类型
我正在尝试使用制表符从 PDF 文档中获取所有内容。
我的数据框实际上只有 1 列。列名称为“一切”。
编辑#2:
我正在运行的导致此错误的命令是:
df_search =
df_every_page[df_every_page.everything.str.match('(Page.*)').str.len() > 0]
我的数据框示例:
everything
0 Invoice Name
1 Test Company
2 Oliver 1200
3 Address: 123 Fake Street
4 Invoice Number 123 abc
5 Date December 15th 2017
6 account number ####### / ######
7 Page 1 out of 10
编辑#3
我的最终目标是从 PDF 中提取所有内容,使用 tabula 将其放入 1 列中。
然后,我将搜索所有记录以查找任何带有“页码”的行。
然后我将把这些记录放入一个数组中,从值中去除文本部分,然后使用页码做一些我的代码中还没有的事情。
我正在使用一些正则表达式来尝试查找这些页码值,这就是错误的来源。
编辑#4:
如果我不得不猜测,我会说这与我发现 here 的内容有关:
编辑#5:
当我print(df_every_page.dtypes) 时,我得到了这个:
everything object
dtype: object
编辑#6:
这很有趣。
我试过这样做:
df_every_page = pd.read_csv('./tmp_every_page.csv', dtype=object, encoding='utf-8', header=None)
df_every_page['everything'] = df_every_page.everything.astype(str).str.len()
我收到了这个错误信息:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa4' in position 31: ordinal not in range(128)
即使数据类型是对象,我还是尝试将其转换为字符串。
我想知道这是否是问题所在,导致我的正则表达式不起作用。
编辑#7:
我正在使用的文件实际上包含“荷兰语”语言的数据。
欧元符号 € 在数据中并被替换为 ¤。我有 99% 的把握这是把事情搞砸了。
我尝试替换该值,但由于编码,这当然不起作用。
我需要用欧元符号替换那个字符,或者什么都不替换。
Utf-8 似乎不适用于字符编码。我尝试设置 iso8859-9 但这也不起作用。如果我们解决了这个问题,我认为应该可以解决所有问题。
【问题讨论】:
-
你的 DataFrame 是什么样的?
-
你在哪里尝试使用字符串访问器?你有错误吗?你的数据框是什么样的?
-
我编辑了我的帖子来回答你的问题。
-
发布您的数据框示例以及您尝试使用的命令
-
完成,如果您还需要什么,请告诉我。