gpt4 book ai didi

python - 检查 Pandas 数据框列列表中的值

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:19 27 4
gpt4 key购买 nike

我有一个看起来像这样的 pandas dataframe 数据

    MED1    MED2    MED3    MED4    MED5
0 60735 24355 33843 16475 9995
1 10126 5789 17165 90000 90000
2 5789 19675 30553 90000 90000
3 60735 17865 34495 90000 90000
4 19675 5810 90000 90000 90000

我想创建一个新的 bool 列“med”,它基于 MED1...MED5 列中的 60735 具有 True/False我正在尝试这个,但不确定如何让它发挥作用。

DF['med'] = (60735 in [DF['MED1'], DF['MED2']])

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()

MED1..MED5 代表患者在医院就诊时服用的药物。我有大约 20 种药物的 list ,我需要知道患者是否正在服用这些药物。每种药物都有一个数字编码,但有一个名称。一个不错的解决方案看起来像(下图),但我如何用 pandas 做到这一点。

drugs = {'drug1':60735, 'drug2':5789}  
for n in drugs.keys():
DF[n] = drugs[n] in DF[['MED1', 'MED2', 'MED3', 'MED4', 'MED5']]

最佳答案

@Mai 的回答当然有效——这样写可能更标准一些,使用 | 运算符。

df['med'] = (df['MED1'] == 60735) | (df['MED1'] == 60735)

如果你想检查所有(或许多)列中的值,你也可以使用 isin 如下。 isin 检查列表中的值是否在每个单元格中,如果每行中的任何元素为 True,则 any(1) 返回 True。

df['med'] = df.isin([60735]).any(1)

编辑:根据您编辑的问题,这行得通吗?

for n in drugs:
df[n] = df[['MED1','MED2','MED3','MED4','MED5']].isin([drugs[n]]).any(1)

关于python - 检查 Pandas 数据框列列表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25025621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com