Python 创建一个新列,说明文件是否存在
正在分析数据集中的数据,其中一些图像不可用,因此我想创建一个新行Python 创建一个新列,说明文件是否存在,python,pandas,Python,Pandas,正在分析数据集中的数据,其中一些图像不可用,因此我想创建一个新行exists,这样我可以循环遍历.jpg图像名称,将其设置为False或True 获取unicode错误 import pandas as pd from pandas import Series train = pd.read_csv('train.csv') In [16]: train['exists'] = Series(str(os.path.isfile('training_images/' + train['id']
exists
,这样我可以循环遍历.jpg
图像名称,将其设置为False或True
获取unicode错误
import pandas as pd
from pandas import Series
train = pd.read_csv('train.csv')
In [16]: train['exists'] = Series(str(os.path.isfile('training_images/' + train['id'] + '.jpg')))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-16-4ada5144d198> in <module>()
----> 1 train['exists'] = Series(str(os.path.isfile('training_images/' + train['id'] + '.jpg')))
/usr/lib/python2.7/genericpath.pyc in isfile(path)
35 """Test whether a path is a regular file"""
36 try:
---> 37 st = os.stat(path)
38 except os.error:
39 return False
TypeError: coercing to Unicode: need string or buffer, Series found
将熊猫作为pd导入
从熊猫进口系列
列车=pd.read\U csv('train.csv'))
在[16]中:train['exists']=Series(str(os.path.isfile('training_images/'+train['id']+'.jpg'))
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1列['exists']=系列(str(os.path.isfile('training_images/'+train['id']+'.jpg'))
/isfile(path)中的usr/lib/python2.7/genericpath.pyc
35“测试路径是否为常规文件”
36尝试:
--->37 st=os.stat(路径)
38除操作系统错误外:
39返回错误
TypeError:强制使用Unicode:需要字符串或缓冲区,找到序列
我建议您使用矢量化解决方案,如下所示:
train['filename'] = 'training_images' + os.sep + train['id'] + '.jpg'
train['exists'] = train['filename'].map(os.path.isfile)
结果将是一个布尔值
pd.Series
您可以使用apply来执行此操作
train['exists'] = train['id'].apply(lambda x: os.path.isfile('training_images/' + x + '.jpg'))
尝试使用
apply
,类似于train['exists']=train['id'].apply(lambda x:os.path.isfile('training_images/'+x+'.jpg'))
?谢谢,它看起来也可以工作,但我已经实现了第一个建议。@jpp当方法类似于isfile
,熊猫如何向量化.map
,所以需要单独检查每个文件吗?