Python:过滤包含关键字的行

Python Pandas:根据指定的关键字,过滤(提取)包含该关键字的行,并保存为 Excel 文件。

import pandas as pd
import numpy as np

inFile = r'D:\教学任务列表 (理论课).xlsx'
outFile = r'D:\教学任务(统计).xlsx'

df1 = pd.read_excel(inFile,header=1)
type(df1)
df1.head()
df1.columns.shape
keys_wd = ['物理','电子','通信']
conditions = df1['教学班名称'].str.contains('|'.join(keys_wd))
wudian = df1[conditions]

#
wudian2 = df1[df1['教学班名称'].apply(lambda x: any(key in x for key in keys_wd))]
wudian2

# 1 直接存-不能写多个sheet
wudian.to_excel(outFile,sheet_name='公共课',index=False) # 
# df1.to_excel(outFile,sheet_name='所有课',index=False)

# 2 使用ExcelWriter
with pd.ExcelWriter(outFile) as writer:
    df1.to_excel(writer,sheet_name='所有课')
    wudian.to_excel(writer,sheet_name='公共课')

# 3 ExcelWriter,必究自由的方式
writer = pd.ExcelWriter(outFile)
wudian.to_excel(writer,sheet_name='公共课',index=False)
df1.to_excel(writer,sheet_name='所有课',index=False)

上面例子中,列单元格中包含有关键字,比如:电子 2001、通信 2001 等形式。如果单元格是由关键字直接混合组成,比如:电子、通信、电子,也可以用上面的代码,但是更简洁的是使用 pd.merge

df1 = pd.DataFrame({'姓名':['张三','李四','王五','马七','杨八'],
					'其他':[100,200,300,400,500]})
df2 = pd.DataFrame({'姓名':['张三','李四','王五']})
df1.merge(df2) #默认inner

参考:

  1. Pandas如何检查列是否包含列表中的字符串
  2. 合并连接之 merge
  3. 再见!Pandas 中的 Merge 方法
posted @   hzworld  阅读(197)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示