【问题标题】:Drop a row and column at the same time Pandas Dataframe同时删除一行和一列 Pandas Dataframe
【发布时间】:2017-10-24 10:19:53
【问题描述】:

我有一个类似这样的数据框

Victim Sex       Female    Male  Unknown
Perpetrator Sex                         
Female            10850   37618       24
Male              99354  299781       92
Unknown           33068  156545      148

我打算删除索引为'Unknown' 的行和名为'Unknown'的列。我知道如何删除一行和一列,但我想知道你是否可以在 pandas 中同时删除一行和一列?如果是,怎么做?

【问题讨论】:

    标签: python pandas dataframe data-science


    【解决方案1】:

    这应该可以完成这项工作,但它不是同时进行的,但不会将中间对象返回给您。

    df.drop("Unknown", axis=1).drop("Unknown", axis=0)
    

    举个具体的例子:

    df = pd.DataFrame([[1,2],[3,4]], columns=['A', 'B'], index=['C','D'])
    print(df)
       A  B
    C  1  2
    D  3  4
    

    电话

    df.drop('B', axis=1).drop('C', axis=0)
    

    返回

       A
    D  3
    

    【讨论】:

      【解决方案2】:

      我认为最接近的'at the same time' 是由locdifference 选择的:

      print (df.index.difference(['Unknown']))
      Index(['Female', 'Male'], dtype='object')
      
      print (df.columns.difference(['Unknown']))
      Index(['Female', 'Male'], dtype='object')
      
      df = df.loc[df.index.difference(['Unknown']), df.columns.difference(['Unknown'])]
      print (df)
      Victim Sex       Female    Male
      Perpetrator Sex                
      Female            10850   37618
      Male              99354  299781
      

      【讨论】:

        【解决方案3】:

        您可以在一行中同时删除列和行,只需它们的位置。例如,如果您想删除第 2,3 和 5 列,同时如果您想删除索引 0,1 和 3 以及数据框的最后一行,您可以按照以下方式执行此操作,

        df.drop(df.columns[[2,3,5]], axis = 1).drop(df.index[[0,1,3,-1]])
        

        【讨论】:

          猜你喜欢
          • 2023-01-15
          • 2018-05-01
          • 2020-12-17
          • 2017-11-05
          相关资源
          最近更新 更多