python - 遍历列,查找选择,创建新列
问题描述
我正在尝试对网站进行 webscraep 并创建名称和图像链接的数据框。但是在我解析名称时存在一些问题。
我的数据框看起来像这样;
color gender model1 model2 extra_col1 extra_col2 extra_col3
black male A24 B2
red woman A1 B3
19sf black male A22 B1
deep 1909sf 2202 blue woman A1 B22
前两行是正确的。我想遍历这 7 列并正确找到颜色、性别和模型并创建新列;
最后下表是我想要的;
color gender model1 model2
black male A24 B2
red woman A1 B3
black male A22 B1
blue woman A1 B22
我有颜色、性别、模型1、模型2的唯一值列表我需要比较该特定列中的每个元素并与列表匹配并在颜色列、性别列等中写入正确的元素。
谢谢你。
解决方案
嗯,肯定不干净。专业人士肯定会有他们的Python
担忧,但由于我是新手,Python
所以Pandas
我只是尝试使用一些Join
,Regular Expressions
和Split
:
import pandas as pd
df = pd.DataFrame({'color':['black','red','19sf','deep'],
'gender':['male','woman','black','1909sf'],
'model1':['A24','A1','Male','2202'],
'model2':['B2','B3','A22','blue'],
'extra_col1':['','','B1','woman'],
'extra_col2':['','','','A1'],
'extra_col3':['','','','B22']})
df = df[df.columns[0:]].apply(lambda x: '|'.join(x.dropna().astype(str)), axis=1)
df = df.replace(r'.*?((?:\w+\|){3}\w+(?=\|*$)).*', value = r'\1', regex = True)
df = df.str.split('|', expand = True)
df.columns = ['color','gender','model1','model2']
print(df)
再说一次,虽然我对外面的编程VBA
很陌生,但它确实可以完成这项工作,但可能会做得更整洁。手指交叉它对你有用=)
推荐阅读
- python - Django 2 将多个用户引用到一个模型中
- android - NestedScrollView 不滚动。View.canScrollVertically() 返回 false
- android - Vertical RecyclerView 内的 Vertical RecyclerView
- google-app-engine - 将数据从 Datastore 迁移到 Google Cloud Firestore
- javascript - Querystring.parse 返回第一个值未定义
- javascript - 在抛出错误的情况下,如何有效地自动记录最后一个函数的参数(在 src 代码中)?
- python - 如何在python中有效地搜索字符串中的列表元素
- java - 如何使用 ListView 删除 Android Studio 显示中的重复联系人
- python - 精确查找的 QuerySet 值必须限制为使用切片的一个结果 - Django 2.1 和 Python 3
- amazon-web-services - 如何在 AWS SES html 模板中添加添加 if 条件?