【问题标题】:Pandas Dataframe- Drop columns if all the values with the column are either 0,1,nanPandas Dataframe- 如果列的所有值都是 0,1,nan,则删除列
【发布时间】:2021-02-20 02:24:47
【问题描述】:

假设这是数据框。如果列中的所有值都是 0,1、NaN,我希望删除列。

df = pd.DataFrame([[1,0,0,0], [0,0,1,0],[2,'NaN',1,0]])

最终结果应该只是第一列“0”并删除其余列。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    试试:

    lst = [0, 1, 'NaN']
    
    mask = df.isin(lst).all(axis=0)
    df.drop(mask.loc[mask].index, axis=1, inplace=True)
    

    它将基本上确保您删除所有列,所有值都在lst中。

    【讨论】:

      【解决方案2】:

      使用这个:

      df.drop([1,2])

      另见the documentation

      【讨论】:

      • 解释你的答案会很有帮助。你可能会说检查熊猫文档。好吧,对于像我这样的菜鸟来说,这也令人困惑。 pandas.pydata.org/pandas-docs/stable/reference/api/… 一件有用的事情是用命名参数说明答案: df.drop(labels=[1,2]) 好的,稍微不那么混乱。但这真的有用吗?它可能适用于该特定数据集,但我认为它不能满足问题的意图 - 是吗?
      猜你喜欢
      • 2017-09-15
      • 1970-01-01
      • 2017-12-22
      • 2022-11-23
      • 1970-01-01
      • 2018-10-29
      • 2022-01-12
      • 2017-11-05
      相关资源
      最近更新 更多