Python 熊猫:重复列,无法删除它们
我,我有一个奇怪的,有点令人沮丧的问题 当我发出以下命令时:Python 熊猫:重复列,无法删除它们,python,pandas,Python,Pandas,我,我有一个奇怪的,有点令人沮丧的问题 当我发出以下命令时:gpd\u cinc\u 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'],
gpd\u cinc\u 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
列。它们都有相同的值,我想删除除一个以外的所有值。
gpd_cinc_merged.drop(gpd_cinc_merged.columns[[7]], axis=1, inplace=True)
但是,我不能这样做
gpd_cinc_merged.drop('year', axis=1, inplace=True)
移除所有这些,但我需要其中一个留在那里。
所以我计算了他们的索引号,所以我只删除了一个。
gpd_cinc_merged.drop(gpd_cinc_merged.columns[[7]], axis=1, inplace=True)
但是,此命令也会删除所有这些选项
gpd_cinc_merged.year
返回一个数据帧,其中包含四列具有相同值的year
列。但我无法在合并操作中使用该变量,因为它返回许多值
有人知道如何将这4个重复列减少为1个吗?使用反转mask
by~
进行布尔掩码,然后使用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]
成功了!谢谢你的回复!