如何将Pandas DataFrame列表列设为索引并展开为单独行?
解决方法:展开列表列并设置为索引
这事儿用pandas的explode()方法就能轻松搞定,它专门用来处理DataFrame中包含列表的列,把列表里的每个元素拆成单独一行。下面是完整的实现步骤:
步骤1:创建原始DataFrame
如果还没构建你的DataFrame,先运行这段代码:
import pandas as pd # 你的原始数据 df = pd.DataFrame({ 'Number': [[12, 3], [2222, 4, 5], [3]], 'Text': ['Apple', 'Banana', 'Guava'] })
步骤2:展开列表列
使用explode()方法将Number列中的列表元素拆分为单独行:
# 展开Number列的列表 df_exploded = df.explode('Number')
这一步执行后,DataFrame会变成这样:
Number Text 0 12 Apple 0 3 Apple 1 2222 Banana 1 4 Banana 1 5 Banana 2 3 Guava
步骤3:设置Number为索引
最后把Number列设置为DataFrame的索引,如果不需要保留原始行索引,可以顺便丢弃:
# 设置Number为索引,同时移除原始行索引 final_df = df_exploded.set_index('Number').reset_index(drop=False)
或者如果你想要更简洁的结果(直接用Number做索引):
final_df = df_exploded.set_index('Number')
最终得到的结果完全符合你的需求:
Text Number 12 Apple 3 Apple 2222 Banana 4 Banana 5 Banana 3 Guava
额外调整(可选)
如果希望列顺序是Number在前、Text在后(和你给出的结果行内容对应,推测你写的表头可能是笔误),可以调整列顺序后再设置索引:
final_df = df_exploded[['Number', 'Text']].set_index('Number')
内容的提问来源于stack exchange,提问作者Inderjeet Singh
相关产品推荐
相关产品推荐

