如何使Pandas.loc()对不存在的索引返回NaN值?
解决方案
要实现指定索引列表取值,让不存在的索引对应行返回NaN,最直接的方式是使用reindex()方法——它专门用于处理索引重排与缺失值填充:
完整代码示例
import pandas as pd # 构造原DataFrame ind, l1, l2 = [0,1,0], [1,1,0], [0,0,1] df = pd.DataFrame([ind, l1, l2], columns=[['C1','C2','C3']]) df.index = ['A','C','E'] # 原代码的双层索引可简化为单层,不影响结果 # 指定目标索引列表,生成包含缺失索引行的新DataFrame target_index = ['A','B','C','D','E'] result_df = df.reindex(target_index) print(result_df)
输出结果
C1 C2 C3 A 0.0 1.0 0.0 B NaN NaN NaN C 1.0 1.0 0.0 D NaN NaN NaN E 0.0 0.0 1.0
补充说明
如果坚持要用loc语法,也可以直接传入目标索引的pd.Index对象,同样会自动为不存在的索引填充NaN:
target_idx = pd.Index(['A','B','C','D','E']) result_df = df.loc[target_idx]
不过reindex()的语义更明确,更适配这类索引重排、缺失值填充的场景。
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

