如何基于df1索引生成新DataFrame:仅保留df2中值为1的单元格
解决方案:生成符合指定规则的DataFrame
核心实现思路
构建一个与df1索引、列结构完全一致的新DataFrame,默认所有单元格为0,仅保留df2中值为1的单元格对应位置的取值,完全忽略df1的实际数据。以下是两种简洁的实现方式:
方法1:全0初始化 + 精准位置更新
先创建和df1结构匹配的全0DataFrame,再将df2中值为1的部分填充到对应位置:
import pandas as pd # 创建与df1索引、列一致的全0DataFrame result = pd.DataFrame(0, index=df1.index, columns=df1.columns) # 仅保留df2中值为1的内容,填充到result对应位置 result.loc[df2.index, df2.columns] = df2.where(df2 == 1, 0) # 验证是否符合预期 print(result.equals(expected_output)) # 输出 True
方法2:过滤后重新索引
先过滤df2仅保留值为1的单元格(其余设为0),再将其索引对齐到df1的索引,空缺位置填充0:
# 过滤df2值为1的内容,重新索引到df1的结构并补0 result = df2.where(df2 == 1, 0).reindex(df1.index, fill_value=0) # 验证是否符合预期 print(result.equals(expected_output)) # 输出 True
适配题目假设说明
基于题目给出的前提条件:
df1与df2列名完全一致df2的索引是df1索引的子集- 两个DataFrame的取值仅为0或1
上述两种方法都能稳定生成符合要求的结果。
内容的提问来源于stack exchange,提问作者Noorulain Islam
相关产品推荐
相关产品推荐

