字典操作与列表提取:从DataFrame生成有效坐标列表
解决方案
你需要的是每行非空列对应的坐标列表,所以要先定位到每行的有效列(非NaN的列),再从label_xpos字典中提取对应坐标,以下是两种实现方式:
方式一:直接获取有效列
直接筛选出当前行非空的列名,再映射坐标:
for i in range(0,10): # 获取当前行非空的列名列表 valid_columns = df.columns[~df.iloc[i].isna()].tolist() # 从字典中提取对应坐标 xclean = [label_xpos[column] for column in valid_columns] print(xclean)
方式二:基于已有空列反向推导
如果想保留你现有获取nan_columns的逻辑,可以通过所有列减去空列得到有效列:
# 提前获取所有列的原始列表 all_columns = df.columns.tolist() for i in range(0,10): nan_columns = df.columns[df.iloc[i].isna()].tolist() # 过滤出不在空列列表里的有效列(保持原始列顺序) valid_columns = [col for col in all_columns if col not in nan_columns] # 提取对应坐标 xclean = [label_xpos[column] for column in valid_columns] print(xclean)
注意:如果用集合差集(
set(all_columns) - set(nan_columns))会打乱列的原始顺序,所以推荐用列表推导式过滤来保持顺序。
内容的提问来源于stack exchange,提问作者Enrra
相关产品推荐
相关产品推荐

