我的代码读取这样的CSV:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pandas as pd
csv_path = 'test.csv'
df = pd.read_csv(csv_path, delimiter=';', quotechar='"',
decimal=',', encoding="ISO-8859-1", dtype={'FOO': str})
df.FOO = df.FOO.map(lambda n: n.zfill(6))
我得到了
AttributeError: 'float' object has no attribute 'zfill'
很明显,Pandas将列FOO
解释为数字。它是数字,但我不想将其解释为数字
(我知道df.FOO = df.FOO.map(lambda n: str(n).zfill(6))
会让问题消失,但我想知道为什么会出现这个问题。)
我使用pandas 0.20.3。
FOO;BAR
01,23;4,56
1,23;45,6
;987
答案 0 :(得分:1)
问题是空单元格。
该行
df.FOO = df.FOO.fillna(value="")
给出了所需的行为,但这似乎是一个非常糟糕的解决方案。
我不确定天气这是一个错误或期望的行为:https://github.com/pandas-dev/pandas/issues/17810