微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-处理丢失的列

我正在使用以下代码使用pandas read_csv读取CSV文件

headers = ["1","2","3","4","5"]
fields = ["1", "5"]

for chunk in pandas.read_csv(fileName, names=headers, header=0, usecols=fields, chunksize=chunkSize):

有时我的CSV不会包含“ 5”列,而我希望能够处理这种情况并指定一些认值.有没有办法只读取我的CSV文件的标头而不读取整个文件,以便我可以手动处理呢?还是其他巧妙的方法认缺少列的值?

解决方法:

如果您传递nrows = 0,那么它只会读取列的行,然后可以调用intersection查找常见的列值并避免任何错误

In[14]:
t="""1,2,3,5,6
0,1,2,3,4"""
headers = ["1","2","3","4","5"]
fields = ["1", "5"]
cols = pd.read_csv(io.StringIO(t), nrows=0).columns
cols

Out[14]: Index(['1', '2', '3', '5', '6'], dtype='object')

因此,现在我们有了列名,我们可以调用intersection以针对您的预期和实际列查找有效列:

In[15]:
valid_cols = cols.intersection(headers)
valid_cols

Out[15]: Index(['1', '2', '3', '5'], dtype='object')

您可以对字段执行相同的操作,然后可以将其传递给当前代码以避免任何异常

只是为了说明传递的nrows = 0只是读取标题行:

In[16]:
pd.read_csv(io.StringIO(t), nrows=0)

Out[16]: 
Empty DataFrame
Columns: [1, 2, 3, 5, 6]
Index: []

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐