Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从excel数据框中删除重复列_Python_Pandas_Dataframe - Fatal编程技术网

Python 从excel数据框中删除重复列

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 请提出前进的方向。类似的方

最接近的答案是下面的链接。

我的要求略有不同。我有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


请提出前进的方向。

类似的方法可能会奏效:

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是的,谢谢,但它不起作用。不知道为什么。我不擅长正则表达式。