在Pandas Dataframe的同时删除一行和一列

时间:2017-05-24 07:48:37

标签: python pandas dataframe data-science

我有一个像这样的数据框

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

我计划删除索引为'Unknown'的行和名为'Unknown'的列。我知道如何删除一行和一列,但我想知道你是否可以在熊猫中同时删除一行和一列?如果是的话,怎么办呢?

3 个答案:

答案 0 :(得分:4)

这应该可以完成这项工作,但实际上并不是在同一时间,但是没有中间对象返回给你。

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

答案 1 :(得分:3)

我认为最接近的'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

答案 2 :(得分:2)

您可以在一行中同时删除列和行及其位置。例如,如果要删除列2,3和5,同时要删除索引0,1和3以及数据帧的最后一行,则可以按照以下步骤进行操作,

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