同时删除一行和一列 Pandas Dataframe

Drop a row and column at the same time Pandas Dataframe

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

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

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

这应该可以完成工作,但实际上并不是同时进行,但不会向您返回任何中间对象。

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)

returns

   A
D  3

我认为最接近的 'at the same time' 是 select by loc and difference:

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

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

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