gpt4 book ai didi

python - 遍历多个列以找到一个值,然后创建一个新列

转载 作者:行者123 更新时间:2023-12-05 01:24:10 27 4
gpt4 key购买 nike

我原来的数据框是这样的

data = {'Patient_ID': ['A', 'B', 'C', 'D'], 'Vision_Difficulty': ['111', '111', '113', '114'],'Hearing_Difficulty': ['111', '111', '113', '114'], 'Hearing_Difficulty': ['112', '111', '112', '113'],'Moving_Difficulty': ['111', '111', '112', '111']}  

df = pd.DataFrame(data)

它展示了一组患者和三种类型的困难。 '111' 表示患者没有任何困难,而其他代码 (112,113,114) 表示他们有。

我想做的是我想遍历三列以找到至少有一种困难类型的患者并将结果保存到新列“Difficulty_status”(是/没有)值(value)观。

期望的输出如下

data = {'Patient_ID': ['A', 'B', 'C', 'D'], 'Vision_Difficulty': ['111', '111', '113', '114'],'Hearing_Difficulty': ['111', '111', '113', '114'], 'Hearing_Difficulty': ['112', '111', '112', '113'],'Moving_Difficulty': ['111', '111', '112', '111'], 'Difficulty_status':['yes','no','yes','yes']}

df_output = pd.DataFrame(data)

到目前为止我取得的成就是这样的

df['Difficylty_status'] = ['yes' if x != '111' else 'no' for x in df['Vision_Difficulty']]

我想概括此代码以检查所有三列(Vision_Difficulty、Hearing_Difficulty、Moving_Difficulty)

最佳答案

使用numpy.where测试是否等于由 DataFrame.filter 筛选的列名称中所有具有 Difficulty 的列和 DataFrame.eq , 用于测试是否所有 True 都使用 DataFrame.all :

df['Difficulty_status'] = np.where(df.filter(like='Difficulty').eq('111').all(axis=1), 
'no',
'yes')

或者使用DataFrame.ne , 用于测试是否至少有一个 True 使用 DataFrame.any并交换 yes, no:

df['Difficulty_status'] = np.where(df.filter(like='Difficulty').ne('111').any(axis=1),
'yes',
'no')

print (df)
Patient_ID Vision_Difficulty Hearing_Difficulty Moving_Difficulty \
0 A 111 112 111
1 B 111 111 111
2 C 113 112 112
3 D 114 113 111

Difficylty_status
0 yes
1 no
2 yes
3 yes

编辑:如果需要为测试困难指定列名,请使用:

cols = ['Vision_Difficulty','Hearing_Difficulty','Moving_Difficulty']
df['Difficulty_status'] = np.where(df[cols].eq('111').all(axis=1), 'no','yes')

或者:

cols = ['Vision_Difficulty','Hearing_Difficulty','Moving_Difficulty']
df['Difficulty_status'] = np.where(df[cols].ne('111').any(axis=1), 'yes','no')

关于python - 遍历多个列以找到一个值,然后创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71582438/

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