如何将大洲-国家列表的DataFrame转换为每行对应单个国家的格式?
解决方法
你可以用pandas的explode()方法快速实现这个格式转换,具体操作如下:
步骤说明
- 给转置后的DataFrame列重命名:原转置结果的列名为
0,将其改为countries,方便后续操作。 - 拆分列表行:使用
explode()方法把每个大洲对应的国家列表拆分成单独的行。 - 整理索引与列:重置索引,把原索引(大洲名)转为普通列,再调整列名和顺序。
完整代码示例
import pandas as pd # 生成原始转置后的DataFrame df = pd.DataFrame({ 'asia':[['china','india','australia']], 'europe':[['spain','uk','russia','france','germany']], 'americas':[['canada','usa','mexico']] }).transpose() # 重命名列 df.columns = ['countries'] # 拆分列表并整理结构 result_df = df.explode('countries').reset_index().rename(columns={'index':'region'}) # 输出目标格式的文本 for _, row in result_df.iterrows(): print(f"{row['region']} | {row['countries']}")
运行结果
执行代码后会输出你需要的格式:
asia | china asia | india asia | australia europe | spain europe | uk europe | russia europe | france europe | germany americas | canada americas | usa americas | mexico
内容的提问来源于stack exchange,提问作者denpy
相关产品推荐
相关产品推荐

