说明书数据处理
说明书数据处理
将各列数据拉取出来
import pandas as pd
# 读取原始文件
df = pd.read_excel('高血压.xlsx')
# 选择需要的列
selected_columns = ['注意事项']
df_selected = df[selected_columns]
# 将结果保存到新文件
df_selected.to_excel('./gao_clean/注意事项.xlsx', index=False)
需要其他列就更改列名即可
抽取结果:
针对这样的数据
【通用名称】 尼索地平胶囊
【商品名称】 蒂益欣
【英文名称】 Nisoldipine Capsules
【汉语拼音】 Ni Suo Di Ping Jiao Nang"
import pandas as pd
import re
# 读取Excel文件
df = pd.read_excel('./gao_clean/clean_name1.xlsx')
# 提取出【通用名称】并删除其他内容
df['通用名称'] = df['商品名称'].apply(lambda x: re.findall(r'【通用名称】\s*(\S+)', x)[0])
# 只保留【通用名称】列,并将结果保存到新文件
df = df[['通用名称']]
df.to_excel('./gao_clean/clean_name2.xlsx', index=False)
如果有这样的情况
【方名】 理中安蛔汤 《类证治裁》
【汉语拼音】 Li Zhong An Hui Tang
import pandas as pd
import re
# 读取Excel文件
df = pd.read_excel('./gao_all/药品名称.xlsx')
# 提取出【通用名称】和【方名】后面的内容并删除其他内容
def extract_name(x):
common_name_match = re.findall(r'【通用名称】\s*(\S+)', x)
if common_name_match:
return common_name_match[0]
else:
other_name_match = re.findall(r'【方名】\s*(\S+)', x)
if other_name_match:
return other_name_match[0]
else:
print(f'Error: failed to extract name from "{x}"')
return None
df['通用名称或方名'] = df['药品名称'].apply(extract_name)
# 只保留【通用名称/方名】列,并将结果保存到新文件
df = df[['通用名称或方名']]
df.to_excel('./gao_all/药品名称1.xlsx', index=False)
使用正则表达式和re
模块来匹配并提取【通用名称】
抽取结果
将抽取出来的通用名称进行构造问题
import pandas as pd
import re
# 读取Excel文件
df = pd.read_excel('高血压.xlsx')
# 提取出所有的【通用名称】并删除其他内容
df['通用名称'] = df['药品名称'].apply(lambda x: re.findall(r'【通用名称】\s*(\S+)', x))
# 构造问题,并将结果存储到Excel文件中
question = "{drug}是用于什么病症的?"
df_result = pd.DataFrame(columns=['问题'])
for i, row in df.iterrows():
drug = row['通用名称'][0] # 获取第一个通用名称
result = re.sub(r'【通用名称】\s*(\S+)', drug, row['药品名称']) # 替换通用名称
df_result.loc[i] = [question.format(drug=drug)] # 添加问题到结果DataFrame
df.loc[i, '药品名称'] = result # 更新药品名称
df.to_excel('./gao_clean/question_clean.xlsx', index=False) # 保存处理后的Excel文件
df_result.to_excel('./gao_clean/question.xlsx', index=False) # 保存结果到Excel文件
去除方名的构造问题
import pandas as pd
import re
# 读取Excel文件
df = pd.read_excel('原始药品说明书(去重).xlsx')
# 提取出所有的【通用名称】或【方名】并删除其他内容
def extract_name(x):
common_name_match = re.findall(r'【通用名称】\s*(\S+)', x)
if common_name_match:
return common_name_match[0]
else:
other_name_match = re.findall(r'【方名】\s*(\S+)', x)
if other_name_match:
return other_name_match[0]
else:
return "" # 如果未找到通用名称或方名,则返回一个空字符串
df['通用名称或方名'] = df['药品名称'].apply(extract_name)
# 构造问题,并将结果存储到Excel文件中
question = "{drug}的注意事项是什么?"
df_result = pd.DataFrame(columns=['问题'])
for i, row in df.iterrows():
drug = row['通用名称或方名'] # 获取通用名称或方名
if drug:
result = re.sub(r'【通用名称】\s*(\S+)|【方名】\s*(\S+)', drug, row['药品名称']) # 替换通用名称或方名
df_result.loc[i] = [question.format(drug=drug)] # 添加问题到结果DataFrame
df.loc[i, '药品名称'] = result # 更新药品名称
else:
df_result.loc[i] = [""] # 如果通用名称或方名为空,则将问题设置为空字符串
df.to_excel('./gao_all/question_clean.xlsx', index=False) # 保存处理后的Excel文件
df_result.to_excel('./gao_all/question_注意.xlsx', index=False) # 保存结果到Excel文件
这个是又抽取了一遍通用名称,构造问题后可以删除保存处理后的Excel文件
全部抽取后,我是手动合并了问题和答案
文件格式转换
代码xlsx转json
import pandas as pd
import json
# 读取 xlsx 文件
df = pd.read_excel('instruction_small.xlsx')
# 将每一行数据转换成一个 JSON 对象
data = []
for i, row in df.iterrows():
row_dict = row.to_dict()
data.append(row_dict)
# 将 JSON 对象保存到文件中
with open('instruction_small.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
通过免费在线将 XLSX 转换为 JSON (aspose.app)网站进行文件转换
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
MakerGao!
喜欢就支持一下吧