我想从固定宽度的平面文件中读取数据框。这是一个对性能有些敏感的操作。
我希望从列值中删除所有空白空格。删除该空格后,我希望将空白字符串转换为NaN
或None
值。这是我的两个想法:
pd.read_fwf(path, colspecs=markers, names=columns,
converters=create_convert_dict(columns))
def create_convert_dict(columns):
convert_dict = {}
for col in columns:
convert_dict[col] = null_convert
return convert_dict
def null_convert(value):
value = value.strip()
if value == "":
return None
else:
return value
或者:
pd.read_fwf(path, colspecs=markers, names=columns, na_values='',
converters=create_convert_dict(columns))
def create_convert_dict(columns):
convert_dict = {}
for col in columns:
convert_dict[col] = col_strip
return convert_dict
def col_strip(value):
return value.strip()
第二个选项取决于在 na_values 之前评估的转换器(去除空格)。
我想知道第二个是否可以工作。我很好奇的原因是因为它似乎更好地保留NaN
具有与Null
无相反的价值。
对于如何执行此操作(剥离空格然后将空白字符串转换为 NaN),我也愿意接受任何其他建议。
我目前无法访问安装了 pandas 的计算机,这就是为什么我无法自己测试它的原因。