如何替换Pandas DataFrame列元素并合并得到指定单列结果
实现代码
场景1:元素为数值1/0,每行仅有1个1
import pandas as pd # 构造示例DataFrame df = pd.DataFrame([ [0, 1, 0], [1, 0, 0], [0, 1, 0]], columns=['Mon','Tue','Wed']) # 生成结果列,取每行最大值对应的列名 df['Day'] = df.idxmax(axis=1) # 仅保留结果列可执行:result = df[['Day']] print(df[['Day']])
运行输出即为你需要的结果:
Day 0 Tue 1 Mon 2 Tue
场景2:元素为字符X/-,每行仅有1个X
只需先匹配目标标记再取对应列名即可:
# 构造X/-格式的示例DataFrame df = pd.DataFrame([ ['-', 'X', '-'], ['X', '-', '-'], ['-', 'X', '-']], columns=['Mon','Tue','Wed']) df['Day'] = df.eq('X').idxmax(axis=1) print(df[['Day']])
特殊场景:存在无标记行(全0/全-)需要返回空字符串
加一步是否存在标记的判断即可:
# 以1/0场景为例,X/-场景把eq(1)改为eq('X')即可 df['Day'] = df.eq(1).any(axis=1).map({True: df.idxmax(axis=1), False: ''})
内容的提问来源于stack exchange,提问作者shweta_developer
相关产品推荐
相关产品推荐

