如何删除含缺失值的键?及从DataFrame提取无缺失数据字母存列表
搞定筛选无缺失数据字母的问题~
首先不用急着删除含缺失值的键,咱们可以通过检查数据缺失情况,精准筛选出符合要求的字母再存入列表。下面分两种常见场景给你具体代码:
场景1:字母是分组列(比如每行对应一个字母)
如果你的DataFrame里有一列是字母(比如叫letter),其他列是对应的数据,要找出那些所属组内所有数据都没有缺失的字母:
import pandas as pd # 先给个示例DataFrame,你可以替换成自己的 data = { 'letter': ['A', 'A', 'B', 'B', 'C', 'C'], 'data_col1': [1, None, 3, 4, 5, 6], 'data_col2': [2, 3, 4, 5, 6, 7] } df = pd.DataFrame(data) # 核心操作:分组后过滤出无缺失的组,提取字母转列表 valid_letters = df.groupby('letter').filter(lambda group: group.notna().all().all())['letter'].unique().tolist() print(valid_letters) # 输出就是你要的 ['B', 'C']
场景2:字母是DataFrame的列名
如果你的字母是列的名称,要找出整列都没有缺失值的列名(字母):
# 示例DataFrame,替换成你的实际数据 data = { 'A': [1, None, 3], 'B': [2, 3, 4], 'C': [5, 6, 7] } df = pd.DataFrame(data) # 筛选无缺失的列名,转为列表 valid_letters = df.columns[df.notna().all()].tolist() print(valid_letters) # 同样输出 ['B', 'C']
小解释
notna().all():用来检查一行/一列里所有元素是不是都没有缺失;分组的时候用group.notna().all().all()是先确保组内每行都没缺失,再确保整个组所有行都符合。- 最后用
.tolist()把筛选结果转成列表,就完美符合你的需求啦~
内容的提问来源于stack exchange,提问作者kys92
相关产品推荐
相关产品推荐

