python - 如果在数据帧的前一行中找到子字符串的第一个实例,则从行中删除
问题描述
我正在对网络抓取的口袋妖怪统计数据进行数据分析。如何删除第 3 行中“Venusaur”的第一个实例,所以它只显示“Mega Venusaur”?我正在考虑一个比较行中前一个“名称”的函数,但如何访问名称的第一个实例?并将其应用于列表其余部分中的所有“巨型”。
name_instance = for Name in Names
poke_df.loc[poke_df['Name'].str.contains(name_instance), 'Name'] = 'Mega'+name_instance
NationalNo Name Type Type_1 Type_2 HP Attack Defense Sp_Atk Sp_Def Speed Total Stat_Avg
2 003 Venusaur [Grass, Poison] Grass Poison 80 82 83 100 100 80 525 87
3 003 Venusaur Mega Venusaur [Grass, Poison] Grass Poison 80 100 123 122 120 80 625 104
4 004 Charmander [Fire, None] Fire None 39 52 43 60 50 65 309 51
解决方案
将条件更改为您的链接:
df = pd.DataFrame({
'Name': ['Venusaur', 'Venusaur Mega Venusaur', 'Charmander']})
df['Prev Name'] = df['Name'].shift(fill_value='')
def get_name(row):
name = row['Name']
prev_name = row['Prev Name']
if name.startswith(prev_name):
return name[len(prev_name):]
return name
df['Name'] = df.apply(get_name, axis=1)
df.drop(columns='Prev Name', inplace=True)
print(df)
输出是:
Name
0 Venusaur
1 Mega Venusaur
2 Charmander
推荐阅读
- python - spark.sql() 和 spark.read.format("jdbc").option("query", "") 有什么区别?
- python - 如何使用 AWS SageMaker Autopilot 创建的模型生成批量预测?
- javascript - 如何避免 .lower() 重新洗牌 d3 中的元素?
- td-engine - 如何通过文件将数据插入TDengine数据库
- r - plotly::sublot 不显示两个标题
- julia - 我正在尝试使用 GLMakie 编译一个交互式图表示例,但它不起作用。我能做些什么?
- flutter - 我无法在下一个屏幕/路线上访问新创建的提供程序
- mysql - 基于持续时间的开始和结束时间的在线用户数
- firebase - 如果子集合中只有一个文档,给子文档什么ID最好?
- excel - Excel:当B列具有特定值时,从A列填充下拉列表