【问题标题】:keep one column's data in pandas and show all NANs from other columns only在 pandas 中保留一列的数据并仅显示其他列中的所有 NAN
【发布时间】:2021-09-09 05:29:32
【问题描述】:

目标:我仍然希望显示此人是谁,以便我可以显示与他们关联的 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)]

这很好用,但我有一个大数据源,我看到很多不必要的信息已经有数据。我只关心看到这个人的名字和他们失踪了什么。

有人有什么想法吗?

【问题讨论】:

    标签: python pandas dataframe nan


    【解决方案1】:

    由于您要求Name 列保持不变,您只需选择除Name 之外的其他列并屏蔽它们,然后创建另一个数据框df2 以删除所有NaN 值。之后,您可以将df2 中的索引从df 中删除,您给您的行只有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 
    

    【讨论】:

    • 好简单!谢谢,工作。我可以看到所有的名字,然后我可以看到哪些列有 NaN。我希望能够不显示没有 NaN 的名称。我在顶部更新了我的示例,否则我在数据框中有大量空白空间。
    • @aero8991 我已经更新了答案,如果解决了你的问题,请采纳。
    • 感谢更新成功了!我的数据有 60 行和 24 列,低于 286 行!所以我可以在 pandas 中看到所有 NAN,但是当我打印到 csv/xlsx 文件时,它们会消失吗?是因为它们在 df2 中被丢弃了吗?
    • @aero8991 是的,因为它们被丢弃了
    【解决方案2】:

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

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

    这在多个维度上运行,将一组 2D 真/假答案传递给“替换与否?”问题。如果是真的,它会将内容发送到/dev/null,而如果不是,它会让它们保持不稳定状态。

    【讨论】:

    • 这太棒了!这个解决方案的问题是它会删除所有列,无论如何要保持“名称”列的填充?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2021-09-20
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多