【发布时间】:2016-09-27 16:57:57
【问题描述】:
我有一个 CSV 文件。大多数值我想读取为字符串,但如果具有给定标题的列存在,我想将列读取为布尔值..
因为 CSV 文件有很多列,所以我不想直接在每一列上指定数据类型并给出如下内容:
data = read_csv('sample.csv', dtype={'A': str, 'B': str, ..., 'X': bool})
是否可以在除一个之外的每一列上定义字符串类型并同时将可选列读取为布尔值?
我目前的解决方案如下(但效率很低而且很慢):
data = read_csv('sample.csv', dtype=str) # reads all column as string
if 'X' in data.columns:
l = lambda row: True if row['X'] == 'True' else False if row['X'] == 'False' else None
data['X'] = data.apply(l, axis=1)
更新: CSV 示例:
A;B;C;X
a1;b1;c1;True
a2;b2;c2;False
a3;b3;c3;True
或者同样可以没有'X'列(因为该列是可选的):
A;B;C
a1;b1;c1
a2;b2;c2
a3;b3;c3
【问题讨论】:
标签: python csv pandas dataframe