Python 从excel数据框中删除重复列
最接近的答案是下面的链接。 我的要求略有不同。我有100多列,列名中可以有“.”(点)。示例数据框如下:-Python 从excel数据框中删除重复列,python,pandas,dataframe,Python,Pandas,Dataframe,最接近的答案是下面的链接。 我的要求略有不同。我有100多列,列名中可以有“.”(点)。示例数据框如下:- df = pd.DataFrame(columns=['A', 'B', 'C','A','D. s']) 因此,我无法基于“.1”或“.2”进行截断 另外,当我从excel中读取时,列名被读取为A、A.1和A.2等,因此即使下面的命令也无法工作 df = df.loc[:,~df.columns.duplicated()] 我想放弃A,A.1,保留A.2 请提出前进的方向。类似的方
df = pd.DataFrame(columns=['A', 'B', 'C','A','D. s'])
因此,我无法基于“.1”或“.2”进行截断
另外,当我从excel中读取时,列名被读取为A、A.1和A.2等,因此即使下面的命令也无法工作
df = df.loc[:,~df.columns.duplicated()]
我想放弃A,A.1,保留A.2
请提出前进的方向。类似的方法可能会奏效:
In [552]: df
Out[552]:
A A.1 A.2 A.3 B B.1 B.3 B.s
0 1 2 3 4 1 2 1 2
1 2 3 4 5 2 4 4 3
In [554]: df.filter(regex=r'^(?!\w\.[0-9])')
Out[554]:
A B B.s
0 1 1 2
1 2 2 3
IIUC,您可以先删除点后的数字,然后仅保留最后的副本:
df.loc[:,~df.columns.str.replace('\.\d+','').duplicated(keep='last')]
你能试试
df.loc[:,~df.columns.str.replace('\.\d+','').duplicated(keep='last')]
?请把它作为答案发布。@AbhishekKulkarni你试过df.filter(regex=r'^(?!\w\.[0-9])
?@Mayank Porwal是的,谢谢,但它不起作用。不知道为什么。我不擅长正则表达式。