似乎没有办法获得输入表(从html/xls/etc文件)到DataFrame对象,因为它是1对1,没有pandas内部应用的任何字段转换。在
假设下面的html表是以.xls文件的扩展名保存的,那么我们如何在Python内存中使用DataFrame对象获得相同的表示形式呢?在
“测试”的内容_文件.xls“:
Number
1.320,00600,00(1)直接读取文件
处理代码:
^{pr2}$
输出:Number
0 1.32
1 60000.00
Number float64
dtype: object
如我们所见,这些数字通过一些预定义的逻辑被转换成float64。我认为这个逻辑包括区域设置,可能是pandas内部的一些规则,等等。直接指定字符串转换器不允许获得初始值。在
(2)应用str函数作为每个维度的转换器
处理代码:converters = {column_name: str for column_name in df[0].dtypes.index}
df = pandas.read_html(f, converters = converters)
print(df[0])
print(df[0].dtypes)
输出:Number
0 1.32000
1 60000
Number object
dtype: obje
显然,这个问题的预期输出是:Number
0 1.320,00
1 600,00
可能存在这样的情况,一个文件包含以不同格式(美式/欧式等)键入的数字。此数字与十进制标记、千位标记等不同。因此,处理此类文件的逻辑方法是提取字符串中的数据“原样”,并对每一行分别使用regexp/其他模块执行解析。有没有办法在熊猫身上做到这一点?还有没有其他方法可以处理这种文件的处理?谢谢各位!在
备注:
“十进制”和“千”参数规范熊猫。阅读_*看起来不是一个可靠的解决方案,因为它适用于所有领域。简单示例:它可以将“02.2017”格式的日期字段视为数字,并将其转换为“022017”。在