<p>您还可以使用defaultdict为每个前缀创建一个计数器。你知道吗</p>
<pre><code>from collections import defaultdict
prefix_starting_location = 2
columns = df.columns[prefix_starting_location:]
prefixes = set(col.split('_')[0] for col in columns)
new_cols = []
dd = defaultdict(int)
for col in columns:
prefix = col.split('_')[0]
dd[prefix] += 1
new_cols.append(col + str(dd[prefix]))
df.columns = df.columns[:prefix_starting_location].tolist() + new_cols
>>> df
A B Data_mean1 Data_std2 Data_corr3 Text_one1 Text_two2 Text_three3
0 a e 1 5 9 foo bar bar
1 b f 2 6 10 bar foo bar
2 c g 3 7 11 foobar barfoo barbar
3 d h 4 8 12 barfoo foobar foofoo
</code></pre>
<p>如果前缀已知:</p>
<pre><code>prefixes = ['Data', 'Text']
new_cols = []
dd = defaultdict(int)
for col in df.columns:
prefix = col.split('_')[0]
if prefix in prefixes:
dd[prefix] += 1
new_cols.append(col + str(dd[prefix]))
else:
new_cols.append(col)
</code></pre>
<p>如果分割字符<code>_</code>不在任何数据字段中:</p>
<pre><code>new_cols = []
dd = defaultdict(int)
for col in df.columns:
if '_' in col:
prefix = col.split('_')[0]
dd[prefix] += 1
new_cols.append(col + str(dd[prefix]))
else:
new_cols.append(col)
df.columns = new_cols
</code></pre>