我,我有一个奇怪的,有点令人沮丧的问题。
当我提供以下命令时: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?
答案 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]