擅长:python、mysql、java
<p>重新索引时,信息已在数据帧中:</p>
<pre><code>df1 = (df.set_index(['postal_code','country','city'])
.stack()
# .reset_index(level=3, drop=True)
.reset_index(name='name')
)
df1['old_name_flag'] = df1['level_3'].ne('name')
df1.drop('level_3', axis=1, inplace=True)
print (df1)
</code></pre>
<p>输出:</p>
<pre><code> postal_code country city name old_name_flag
0 1410 BEL Brussels Nitron False
1 1410 BEL Brussels Rotory True
2 1410 BEL Brussels Datec True
3 1020 ENG NaN Pulset False
4 1020 ENG NaN Cmotor True
5 1310 JPN NaN Rotaxi False
6 1310 JPN NaN Datec True
</code></pre>
<p>更新:您还可以按如下方式使用<code>assign</code>链接命令(不过为了清晰起见,我更喜欢使用单独的命令):</p>
<pre><code>df1 = (df.set_index(['postal_code','country','city'])
.stack()
.reset_index(name='name')
.assign(old_name_flag=lambda x: x['level_3'].ne('name'))
.drop('level_3', axis=1)
)
</code></pre>