如何在保留Pandas DataFrame结构的前提下计算列总和?
问题描述
我有一个DataFrame示例如下:
df = pd.DataFrame([[1, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1], [0, 0, 0, 0]], columns = ["CHAP1SEC1", "CHAP1SEC2", "CHAP1SEC3", "CHAP1SEC4", "CHAP1SEC5"], index = [0, 1, 2, 3])
注:变量为二进制类型。
我想要将这4行合并为1行,保留列中的非零值。由于变量是二进制,我尝试使用df.sum(axis = 1)计算列总和,虽得到所需数值,但输出不符合原DataFrame结构,希望得到保持原结构的结果,求简洁解法。
解法
因为变量是二进制类型,只需按列聚合取最大值(或求和),再转换为DataFrame即可保留原结构:
方法1:按列求和转DataFrame
result = df.sum(axis=0).to_frame().T
方法2:按列取最大值转DataFrame
result = df.max(axis=0).to_frame().T
两种方法效果完全一致——只要列中存在1,结果就为1;全0列结果为0,最终输出的result和原DataFrame列结构完全相同,仅保留一行聚合后的结果。
内容的提问来源于stack exchange,提问作者statnet22
相关产品推荐
相关产品推荐

