熊猫:重复列,无法删除它们

时间:2018-05-25 13:38:25

标签: python pandas

我,我有一个奇怪的,有点令人沮丧的问题。

当我提供以下命令时:gpd_cinc_merged.columns

我得到以下输出:

Index(['level_0', 'index', 'SU_gdppc', 'SU_gdppcl', 'year', 'US_gdppc',
       'US_gdppcl', 'year', 'index', 'SU_milex', 'SU_cinc', 'US_milex',
       'US_cinc', 'year', 'year'],
      dtype='object')

您可能会注意到存在多个year列。它们都具有相同的值,我想删除all but one.

但是,我无法这样做

gpd_cinc_merged.drop('year', axis=1, inplace=True)

删除所有这些,但我需要其中一个留在那里。 所以相反我计算了他们的索引号,所以我会删除just one.

gpd_cinc_merged.drop(gpd_cinc_merged.columns[[7]], axis=1, inplace=True)

但是,此命令也会删除所有这些命令。

gpd_cinc_merged.year 

返回包含四个year列且值相同的数据框。然而,我无法在合并操作中使用该变量,因为它返回到许多值。

有没有人知道如何将这4个重复列减少到1?

1 个答案:

答案 0 :(得分:3)

使用duplicated反对mask ~进行布尔掩码,然后boolean indexing使用loc进行过滤,然后按列过滤:

c = pd.Index(['level_0', 'index', 'SU_gdppc', 'SU_gdppcl', 'year', 'US_gdppc',
       'US_gdppcl', 'year', 'index', 'SU_milex', 'SU_cinc', 'US_milex',
       'US_cinc', 'year', 'year'])

df = pd.DataFrame(columns=c)

df = df.loc[:, ~df.columns.duplicated()]
print (df)
Empty DataFrame
Columns: [level_0, index, SU_gdppc, SU_gdppcl, year, US_gdppc, 
          US_gdppcl, SU_milex, SU_cinc, US_milex, US_cinc]
Index: []

<强>详细

print (~df.columns.duplicated())
[ True  True  True  True  True  True  True False False  True  True  True
  True False False]