提示:以下是本篇文章正文内容,下面案例可供参考
一、问题
import pandas as pd
# 假设的 embeddingf_matrix,包含一些药物和疾病的嵌入向量
embeddingf_matrix = {
'aspirin': [0.1, 0.2, 0.3],
'warfarin': [0.4, 0.5, 0.6],
'thromboembolism': [0.7, 0.8, 0.9],
'angina': [0.1, 0.1, 0.1]
}
# 示例 DataFrame,包含药物、疾病和一个标签列
data = {
'drug': ['aspirin', 'ibuprofen', 'warfarin', 'aspirin'],
'disease': ['angina', 'headache', 'thromboembolism', 'thromboembolism'],
'label': [12, 8, 15, 20]
}
drug_disease_pd = pd.DataFrame(data)
drug_disease_pd = drug_disease_pd.loc[(drug_disease_pd['drug'].isin(embeddingf_matrix))&(drug_disease_pd["disease"].isin(embeddingf_matrix)), :]
解释:drug_disease_pd[‘drug’].isin(embeddingf_matrix.keys()) 生成一个布尔序列,标示每个 drug 是否在 embeddingf_matrix 的键中。
drug_disease_pd[‘disease’].isin(embeddingf_matrix.keys()) 生成一个布尔序列,标示每个 disease 是否在 embeddingf_matrix 的键中。
然后使用 & 操作符组合这两个条件,选择同时满足两个条件的行。
结果是那些药物和疾病都存在于 embeddingf_matrix 中的记录被选中
二、isin()的使用
isin()方法用于过滤数据框(DataFrame)或序列(Series)中的值,仅保留在给定列表中出现的值。
https://blog.csdn.net/qq_41813454/article/details/136422835
三、loc[ ]的使用
.loc[ ] 在 pandas 中是一个非常强大的索引器,可以根据布尔值进行筛选。这是一种常用的方法来基于条件选择 DataFrame 中的数据行。当你传递一个布尔序列到 .loc[] 时,它会返回所有对应为 True 的行
根据布尔值进行筛选:
import pandas as pd
# 创建一个示例 DataFrame
data = {'age': [25, 30, 35, 40, 45],
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward']}
df = pd.DataFrame(data)
# 创建一个布尔序列,选择年龄大于 30 的行
condition = df['age'] > 30
# 使用.loc[]根据布尔序列筛选
filtered_df = df.loc[condition]
print(filtered_df)
输出结果:
age name
2 35 Charlie
3 40 David
4 45 Edward
或者也可以:
# 直接在.loc[]中使用条件
filtered_df = df.loc[df['age'] > 30]
print(filtered_df)
# 也可以使用逻辑运算符(如 &(和)、|(或))来结合多个条件、
filtered_df = df.loc[(df['age'] > 30) & (df['name'].str.startswith('D'))]
print(filtered_df)