<p>如果我没听错,这里有一个避免显式循环的解决方案。在</p>
<pre><code># Create a new column of state names with NaN in any
# row that did not contain a state name flagged with "edit"
df['state'] = df[df['RegionName'].str.contains('edit')]['RegionName']
# Forward-fill the NaNs in the state column
df = df.ffill()
# Delete rows where RegionName == state and
# reset index to default integers
df = df[df.iloc[:, 0] != df.iloc[:, 1]].reset_index(drop=True)
# Delete "[edit]" flag from strings
df['state'] = df['state'].str.replace('\[edit\]', '')
# Result:
df
RegionName state
0 Auburn Alabama
1 Florence Alabama
2 Jacksonville Alabama
3 Livingston Alabama
4 Montevallo Alabama
5 Troy Alabama
6 Tuscaloosa Alabama
7 Tuskegee Alabama
8 Fairbanks Alaska
9 Flagstaff Arizona
10 Tempe Arizona
11 Tucson Arizona
12 Arkadelphia Arkansas
13 Conway Arkansas
14 Fayetteville Arkansas
15 Jonesboro Arkansas
16 Magnolia Arkansas
17 Monticello Arkansas
18 Russellville Arkansas
19 Searcy Arkansas
20 Angwin California
21 Arcata California
22 Berkeley California
23 Chico California
24 Claremont California
</code></pre>