![](/img/trans.png)
[英]Removing dash string from mixed dtype column in pandas Dataframe
[英]From a mixed dtype column, extract string from specific column values in python pandas
我的 dataframe 如下所示:
data = {'pred_id':[np.nan, np.nan, 'Pred ID', 258,265,595,658],
'class':[np.nan,np.nan,np.nan,'pork','sausage','chicken','pork'],
'image':['Weight',115.37,'pred','app_images/03112020/Prediction/222_prediction_resized.jpg','app_images/03112020/Prediction/333_prediction_resized.jpg','volume',np.nan]}
df = pd.DataFrame(data)
df
编辑:我正在尝试使用列“图像”中的值创建一个新列“图像名称”。 我想从字符串中包含“app_images/”的列“image”值中提取 substring,如果没有,则保持不变。 我尝试了下面的代码及其抛出的“属性错误”消息。
帮助我了解如何找到数据类型,然后从具有“app_images/”的值中提取 substring,如果没有,则保持原值不变。 我不知道如何解决这个问题。 提前致谢。
images = []
for i in df['image']:
if i.dtypes == object:
if i.__contains__('app_images/'):
new = i.split('_')[1]
name = new.split('/')[3]+'.jpg'
images.append(name)
else:
images.append(i)
df['image_name'] = images
df
不要使用循环,使用矢量代码、 str.extract
和正则表达式。
从您的描述和代码来看,这似乎是您所期望的:
df['image_name'] = (df['image'].str.extract(r'app_images/.*/(\d+)_[^/]+\.jpg',
expand=False)+'.jpg'
)
output:
pred_id class image image_name
0 NaN NaN Weight NaN
1 NaN NaN 115.37 NaN
2 Pred ID NaN pred NaN
3 258 pork app_images/03112020/Prediction/222_prediction_resized.jpg 222.jpg
4 265 sausage app_images/03112020/Prediction/333_prediction_resized.jpg 333.jpg
5 595 chicken volume NaN
6 658 pork NaN NaN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.