【发布时间】:2018-11-08 12:05:48
【问题描述】:
我正在尝试使用 pd.read_excel 将大量以数字数据为主的 .xls 和 .xlsx 文件读入 python。但是,这些文件使用 em-dash 来表示缺失值。我试图让 Python 将所有这些破折号替换为 nans。我似乎无法找到让 Python 甚至识别字符的方法,更不用说替换它了。我尝试了以下不起作用
df['var'].apply(lambda x: re.sub(u'\2014','',x))
我也试过了
df['var'].astype('float')
将数据框中的所有 em-dash 转换为 nans,同时将数字数据保持为浮点数的最佳方法是什么?
【问题讨论】:
-
Google 好一点,因为我在 10 秒内找到了this。
-
复制自this post。解决方案是 df.replace()
-
问题是我的破折号很长,而不是普通的破折号。所以正常的字符串查找/替换功能不起作用。因为 Python 不匹配 '-' 和 '-'。当我不断收到这样的错误时:UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 0: ordinal not in range(128)
-
pd.read_excel通常不使用 ascii 编解码器。你究竟是如何阅读 excel 文件的? -
然后以同样的方式简单地复制粘贴该符号?所以不是连字符而是您要查找的符号?