<p>这里有一种方法。首先,重新创建数据帧:</p>
<pre><code>from io import StringIO
import pandas as pd
data = '''| code | type | name | final_component |
| C001 | ACT | Exhaust Blower Drive | |
| C001 | AL | | |
| C001 | AL | | |
| C001 | SET | Exhaust Blower Drive | |
| C001 | AL | | |
| C001 | AL | | |
| C001 | AL | | |
| C002 | ACT | Spray Pump Motor 1 Pump | |
| C002 | SET | Spray Pump Motor 1 Pump | |
| C003 | ACT | Spray Pump Motor 2 Pump | |
| C003 | SET | Spray Pump Motor 2 Pump | |
| C004 | ACT | Spray Pump Motor 3 Pump | |
| C004 | SET | Spray Pump Motor 3 Pump | |
'''
df = pd.read_csv(StringIO(data), sep='|',)
df = df.drop(columns=['Unnamed: 0', 'Unnamed: 5'])
</code></pre>
<p>现在,删除前导空格和尾随空格:</p>
<pre><code># remove leading / trailing spaces
df.columns = [c.strip() for c in df.columns]
for col in df.columns:
if df[col].dtype == object:
df[col] = df[col].str.strip()
</code></pre>
<p>并填充<code>final_component</code>:</p>
<pre><code># populate 'final component'
df['final_component'] = df['name']
</code></pre>
<p>现在用<code>None</code>替换空字符串并使用<code>ffill()</code></p>
<pre><code># find final component that is empty string...
mask = df['final_component'] == ''
# ... and convert to None...
df.loc[mask, 'final_component'] = None
# ...so we can use ffill()
df['final_component'] = df['final_component'].ffill()
print(df)
code type name final_component
0 C001 ACT Exhaust Blower Drive Exhaust Blower Drive
1 C001 AL Exhaust Blower Drive
2 C001 AL Exhaust Blower Drive
3 C001 SET Exhaust Blower Drive Exhaust Blower Drive
4 C001 AL Exhaust Blower Drive
5 C001 AL Exhaust Blower Drive
6 C001 AL Exhaust Blower Drive
7 C002 ACT Spray Pump Motor 1 Pump Spray Pump Motor 1 Pump
8 C002 SET Spray Pump Motor 1 Pump Spray Pump Motor 1 Pump
9 C003 ACT Spray Pump Motor 2 Pump Spray Pump Motor 2 Pump
10 C003 SET Spray Pump Motor 2 Pump Spray Pump Motor 2 Pump
11 C004 ACT Spray Pump Motor 3 Pump Spray Pump Motor 3 Pump
12 C004 SET Spray Pump Motor 3 Pump Spray Pump Motor 3 Pump
</code></pre>