- 已合成更多数据以更好地演示方法
- 首先筛选出具有缺失值
df.loc[df.isna().any(axis=1)] 的行
- 然后遍历列,挑选出缺少值的列
- 最后把这个系列
missing打印出来
import pandas as pd
import numpy as np
df = pd.DataFrame({"shape": ["Triangle", "Acute triangle", "Equilateral triangle", "Heptagonal triangle", "Isosceles triangle", "Golden Triangle", "Obtuse triangle", "Rational triangle", "Right triangle", "Isosceles right triangle", "Kepler triangle", "Scalene triangle", "Quadrilateral", "Cyclic quadrilateral", "Kite", "Parallelogram", "Rhombus", "Lozenge", "Rhomboid", "Rectangle", "Square", "Tangential quadrilateral", "Trapezoid", "Isosceles trapezoid", "Pentagon", "Hexagon", "Lemoine hexagon", "Heptagon", "Octagon", "Nonagon", "Decagon", "Hendecagon", "Dodecagon", "Tridecagon", "Tetradecagon", "Pentadecagon", "Hexadecagon", "Heptadecagon", "Octadecagon", "Enneadecagon"]})
df = df.assign(**{c:np.random.choice([np.nan]+list(range(3,10)), len(df)) for c in ["width","height","length"]})
missing = df.loc[df.isna().any(axis=1)].apply(
lambda r: ",".join(
[r["shape"]] + [c for c in r.drop("shape").index.values
if not np.isnan(r[c])]
),
axis=1,
)
print("\n".join(missing.tolist()))
输出
Equilateral triangle,height
Isosceles right triangle,width,height
Quadrilateral,width,length
Tangential quadrilateral,height,length
Isosceles trapezoid,width,height
Heptagon,width,height
Tridecagon,width,length
Tetradecagon,width,height
Heptadecagon,height,length
Octadecagon,width,length