如何按列名小数点前的数字合并Pandas DataFrame布尔列
实现方法
你可以通过 Pandas 按列分组 + 按行取布尔值any的方式实现需求,核心逻辑是把列名小数点前的部分作为分组键,同一分组内每行只要存在一个True,合并后的值就为True。
完整代码示例
import pandas as pd array = {'25.2': [False, True, False], '25.4': [False, False, True], '27.78': [True, False, True]} df = pd.DataFrame(array) # 按列名小数点前的整数分组,每组按行取any得到合并结果 df_new = df.groupby(lambda col: col.split('.')[0], axis=1).any() # 输出结果验证 print(df_new)
代码说明
lambda col: col.split('.')[0]:遍历所有列名,按.分割后取前半部分作为分组标识axis=1:指定按列维度进行分组.any():对同分组内的多列数据,逐行判断是否至少有一个True,返回最终布尔值
如果你的列名是数值类型而非字符串,可以调整分组逻辑先做类型转换:
df_new = df.groupby(lambda col: str(col).split('.')[0], axis=1).any()
运行后得到的df_new就是你需要的结果:
25 27 0 False True 1 True False 2 True True
内容的提问来源于stack exchange,提问作者gtomer
相关产品推荐
相关产品推荐

