Pandas:如何将列中列表元素拆分为独立列?
Pandas拆分列表列为独立列的实现方法
问题场景
现有如下Pandas DataFrame:
import pandas as pd data = { 'a' : [['Foo', 49.51, -120.69], ['Foo', 49.51, -120.69], ['Foo', 49.51, -120.69], ['Foo', 49.51, -120.69]], 'b' : [['YLK', 44.48, -79.55], ['HG76', 44.60, -65.76], ['DEF', 49.52, -113.99], ['YXZ', 47.96, -84.78]], 'c' : [1628.931942, 1949.748061, 2556.622213, 301.193418] } df = pd.DataFrame(data)
对应的初始结构:
a b c 0 [Foo, 49.51, -120.69] [YLK, 44.48, -79.55] 1628.931942 1 [Foo, 49.51, -120.69] [HG76, 44.6, -65.76] 1949.748061 2 [Foo, 49.51, -120.69] [DEF, 49.52, -113.99] 2556.622213 3 [Foo, 49.51, -120.69] [YXZ, 47.96, -84.78] 301.193418
需要将a、b列中的列表元素拆分为独立列,最终得到如下结构:
a b c d e f g 0 Foo 49.51 -120.69 YLK 44.48 -79.55 1628.931942 1 Foo 49.51 -120.69 HG76 44.6 -65.76 1949.748061 2 Foo 49.51 -120.69 DEF 49.52 -113.99 2556.622213 3 Foo 49.51 -120.69 YXZ 47.96 -84.78 301.193418
实现方法
通过pd.DataFrame将列表列展开为多列,再与原DataFrame的剩余列拼接即可,完整代码如下:
# 拆分a列,指定对应列名 a_split = pd.DataFrame(df['a'].tolist(), columns=['a', 'b', 'c']) # 拆分b列,指定对应列名 b_split = pd.DataFrame(df['b'].tolist(), columns=['d', 'e', 'f']) # 拼接所有部分,原c列重命名为g避免冲突 result = pd.concat([a_split, b_split, df['c'].rename('g')], axis=1) print(result)
执行后就能得到目标格式的DataFrame。
内容的提问来源于stack exchange,提问作者zeroes_ones
相关产品推荐
相关产品推荐

