将一列的数据保留在 pandas 中,仅显示其他列中的所有 NAN

keep one column's data in pandas and show all NANs from other columns only

目标:我仍然希望显示此人是谁,以便我可以显示与他们关联的 NAN,以便我可以快速找到缺少信息的人。

考虑这个数据集:

df:
Name            Phone            Address
John Doe        NAN               123 lane
Jenny Gump      222-222-2222      NAN
Larry Bean      NAN               561 road
Harry Smidlap   111-111-1111       555 highway

我想清理数据并显示如下内容(类似于过滤空白时的 excel 视图): 然后可能会用“数据存在”的内容填充空数据,或者将其留空。我愿意接受建议。并删除填充了所有数据的行。

df:
Name        Phone            Address
John Doe     NAN               
Jenny Gump                     NAN
Larry Bean    NAN             

我试过:

df[df.isnull().any(axis=1)]

效果很好,但我有一个大数据源,我看到很多已经有数据的不必要信息。我只关心看对方的名字和缺了什么。

有人有什么想法吗?

Mask(条件为真时替换值)任何不为空字符串的地方。

df.mask(df.notnull(), '') 

这在多个维度上运行,传递一组 true/false 对“是否替换?”问题的答案。如果它是真的,它将内容发送到 /dev/null,而如果不是,它允许它们保持不稳定。

由于您要求 Name 列完好无损,您可以 select 除 Name 之外的其他列并屏蔽它们,然后创建另一个数据框 df2删除所有 NaN 值。之后,您可以从 df 中删除 df2 中的索引,您只为您提供 NaN 值的行,如下所示。

df.mask((df.columns != 'Name') & (df.notnull()), "", inplace=True)
df2 = df.dropna()
df.drop(df2.index, inplace=True)

这应该会给你以下输出。

Name        Phone            Address
John Doe     NAN               
Jenny Gump                     NAN
Larry Bean    NAN