Python 自动重命名相同的标题

Python 自动重命名相同的标题,python,pandas,Python,Pandas,我正在使用python3.7和pandas 我已成功加载我的csv文件并将标题放置在列表中 csv\u file=pandas.read\u csv(file,encoding=“ISO-8859-1”) headers=[line.upper()表示csv\u文件中的行] 但是,当我打印标题时,相同的标题都以[number]作为后缀,例如 ['ADID', 'FIRST NAME', 'LAST NAME', 'FULL NAME', 'ADID.1', 'ADID.2', 'ROLE 2',

我正在使用
python3.7
pandas

我已成功加载我的csv文件并将标题放置在列表中

csv\u file=pandas.read\u csv(file,encoding=“ISO-8859-1”)

headers=[line.upper()表示csv\u文件中的行]

但是,当我打印
标题时,相同的标题都以[number]作为后缀,例如

['ADID', 'FIRST NAME', 'LAST NAME', 'FULL NAME', 'ADID.1', 'ADID.2', 'ROLE 2', 'GROUP', 'DIVISION', 'TEAM', 'COMPANY']  
根据输入文件,
ADID
ADID.1
ADID.2
都应为
ADID


熊猫是这样对待相同的标题的吗?是否可以关闭此功能?

您的CSV文件是否有多个名为“ADID”的标题


那是行不通的。标题必须是唯一的。否则,如果您提到“ADID”列,它如何知道您谈论的是ADID、ADID.1还是ADID.2?

您的CSV文件是否有多个称为“ADID”的标题


那是行不通的。标题必须是唯一的。否则,如果您提到“ADID”列,它如何知道您是在谈论ADID、ADID.1还是ADID.2?

有一个名为
mangle\u dupe\u cols
的选项,默认情况下该选项为True(即将重复的列设置为X,X.1,…,X.N),但该选项并不是要设置为False

正如pandas在其文档中警告的那样,“如果列中有重复的名称,传入False将导致数据被覆盖。”


来源:

有一个名为
mangle_dupe_cols
的选项,默认情况下该选项为True(即将重复的列设置为X,X.1,…,X.N),但该选项并不是要设置为False

正如pandas在其文档中警告的那样,“如果列中有重复的名称,传入False将导致数据被覆盖。”


来源:

这是可能的,但不推荐

您可以与
regex
-
(\。\d+)$
一起使用:

与角色匹配。字面意思(区分大小写)
\d+匹配一个数字(等于[0-9])
+量词-在一次和无限次之间匹配,尽可能多地匹配,根据需要回馈(贪婪)
$在一行末尾断言位置



这是可能的,但不推荐

您可以与
regex
-
(\。\d+)$
一起使用:

与角色匹配。字面意思(区分大小写)
\d+匹配一个数字(等于[0-9])
+量词-在一次和无限次之间匹配,尽可能多地匹配,根据需要回馈(贪婪)
$在一行末尾断言位置



试图配置
mangle\u dupe\u cols=False
但出现错误
ValueError:不支持设置mangle\u dupe\u cols=False
。这仍然是一个持续的过程。我只做程序检查。你的目标是要找出列名中是否有任何重复项吗?我想你可以用一些杂乱的线条捕捉到重复项:
test=pd.read\u csv('path/to/your/file',nrows=1,header=None)
然后
assert numpy.unique(test)==test.shape[1]
如果有任何重复项试图配置
mangle\u dupe\u cols=False,将引发断言错误
但它给出了错误
ValueError:不支持设置mangle\u dupe\u cols=False
。这仍然是一个持续的过程。我只做程序检查。你的目标是要找出列名中是否有任何重复项吗?我想你可以用一些杂乱的线条捕捉到重复项:
test=pd.read\u csv('path/to/your/file',nrows=1,header=None)
然后
assert numpy.unique(test)==test.shape[1]
如果存在任何重复项,则会引发断言错误;脚本将用于报告“重复”标题。以编程方式,只要头名称不跟随为true的[number]符号,就可以完成此操作;脚本将用于报告“重复”标题。以编程方式,只要标题名称不遵循[number]符号,就可以完成此操作
c = ['ADID', 'FIRST NAME', 'LAST NAME', 'FULL NAME', 
     'ADID.1', 'ADID.2', 'ROLE 2', 'GROUP', 'DIVISION', 'TEAM', 'COMPANY']  
df = pd.DataFrame(columns=c)

df.columns = df.columns.str.replace('(\.\d+)$','')
print (df)
Empty DataFrame
Columns: [ADID, FIRST NAME, LAST NAME, FULL NAME, 
          ADID, ADID, ROLE 2, GROUP, DIVISION, TEAM, COMPANY]
Index: []