【问题标题】: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' 是由loc 和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
【解决方案3】:
您可以在一行中同时删除列和行,只需它们的位置。例如,如果您想删除第 2,3 和 5 列,同时如果您想删除索引 0,1 和 3 以及数据框的最后一行,您可以按照以下方式执行此操作,
df.drop(df.columns[[2,3,5]], axis = 1).drop(df.index[[0,1,3,-1]])