Python 强制熊猫在列中作为原始unicode读取

Python 强制熊猫在列中作为原始unicode读取,python,python-2.7,pandas,date,unicode,Python,Python 2.7,Pandas,Date,Unicode,我需要解释人们在电子表格中输入的数据完全错误。我无法控制他们的行为,因为我是从另一个网站上抓取的。然而,存在一些真正糟糕的数据输入,例如“吨”货物的以下数据: 可爱,对吧?我需要找到一种方法,在熊猫不自动将它们转换为日期的情况下,将这样的数字读入熊猫,之后就不可能将它们转换回11955和11862。要在顶部添加樱桃,以下操作无效: dfx = pd.read_excel(ii,header=None,dtype={'Tons': str}) 因为数据通常没有列标题,我根据数据的顺序推断标题,

我需要解释人们在电子表格中输入的数据完全错误。我无法控制他们的行为,因为我是从另一个网站上抓取的。然而,存在一些真正糟糕的数据输入,例如“吨”货物的以下数据:

可爱,对吧?我需要找到一种方法,在熊猫不自动将它们转换为日期的情况下,将这样的数字读入熊猫,之后就不可能将它们转换回11955和11862。要在顶部添加樱桃,以下操作无效:

dfx = pd.read_excel(ii,header=None,dtype={'Tons': str})
因为数据通常没有列标题,我根据数据的顺序推断标题,谢天谢地,这并没有改变。那么,如何让熊猫在这里讨人喜欢呢

一旦我读入数据,即使我随后将整个列更改为unicode或string,它也只是日期的unicode或string表示形式:

 2055-01-19 00:00:00
 2062-01-18 00:00:00
所以我需要把它读成“raw”(不确定这是什么意思)作为
1,19,55
,而不让熊猫去猜它的类型,或者只是一个忽略逗号的数字


谢谢

您可以为列
Tons
创建一个
converter
,将数据格式化为
pd。read\u execel
解释:

转换器:dict,默认无用于转换的函数dict 某些列中的值。键可以是整数或列 标签、值是接受一个输入参数(Excel)的函数 单元格内容,并返回转换后的内容

例如,您可以使用以下转换器

tons_converter = lambda x: int("".join(x.split(',')))
dfx = pd.read_excel(ii,header=None,dtype={0: str}, converters={0: tons_converter})
可复制示例 下面是一个动态创建csv文件并应用转换的示例

from StringIO import StringIO
import pandas as pd 

data = """
1,125,125
10,578,589
12
"""

tons_converter = lambda x: int("".join(x.split(',')))
dfx = pd.read_csv(StringIO(data),header=None,dtype=object, sep="|", converters={0: tons_converter})

print(dfx.head())
输出是您想要的:

          0
0   1125125
1  10578589
2        12

当我有机会的时候,我会试试这个,但这似乎应该有效,谢谢,确认后会给你答案