<p>您可以从列创建一个系列(因为<code>Index</code>对象没有<code>ffill</code>方法,这在这里很有用)。然后确定哪些列以<code>Unnamed</code>开头,屏蔽它们并使用一个cumcount来确定要添加到末尾的数字(在可能有多个连续的未命名:列的情况下),并使用<code>ffill</code>来获取前一个不以“未命名”开头的列标签。为列指定此系列</p>
<h3>样本数据</h3>
<pre><code>import pandas as pd
import numpy as np
df = pd.DataFrame(columns=['Reconnaissance', 'Unnamed: 1', 'Resource Development',
'Unnamed: 3', 'Initial Access', 'Unnamed: 5'],
data=1, index=[0])
</code></pre>
<h3>代码</h3>
<pre><code>s = pd.Series(df.columns)
s = s.mask(s.str.startswith('Unnamed:'))
s = (s.ffill()
+ s.groupby(s.notnull().cumsum()).cumcount().astype(str).radd('_').replace('_0', ''))
df.columns = s
</code></pre>
<hr/>
<pre><code>print(df)
Reconnaissance Reconnaissance_1 Resource Development Resource Development_1 Initial Access Initial Access_1
0 1 1 1 1 1 1
</code></pre>
<hr/>
<p>下面是另一个示例,它展示了在间距较小的“未命名”列中,这种情况是如何发生的</p>
<pre><code>df = pd.DataFrame(columns=['a', 'Unnamed: 1', 'Unnamed: 2', 'b', 'c', 'Unnamed: 3'],
data=[np.arange(6)], index=[0])
#### Same code as above
print(df)
a a_1 a_2 b c c_1
0 0 1 2 3 4 5
</code></pre>