使用反转字典填充缺失值后,如何保留DataFrame全部列并输出?
解决DataFrame填充缺失值后丢失其他列的问题
问题出在你执行df.set_index('Country')['Region']时,只选取了Region列进行后续操作,导致其他列被过滤掉。以下两种方法可以保留完整的DataFrame:
方法一:直接对Region列填充(推荐)
不需要单独提取列,直接通过Country映射字典值来填充Region的缺失值,其他列完全保留:
revdct = {c: r for r, lst in dct.items() for c in lst} # 用Country匹配字典中的Region,填充Region列的缺失值 df['Region'] = df['Region'].fillna(df['Country'].map(revdct))
方法二:保留全量列进行索引操作
如果一定要用set_index的方式,不要单独选取Region列,而是对整个DataFrame操作后再更新Region列:
revdct = {c: r for r, lst in dct.items() for c in lst} # 设置Country为索引,此时所有列都保留 df = df.set_index('Country') # 仅对Region列进行缺失值填充 df['Region'] = df['Region'].fillna(revdct) # 恢复Country为普通列 df = df.reset_index()
执行以上任意一种方法后,你的DataFrame会保留所有原始列,同时完成Region列的缺失值填充。
内容的提问来源于stack exchange,提问作者Anastasia
相关产品推荐
相关产品推荐

