如何拆分Pandas DataFrame列中存储的元组为多个独立列
实现方案
直接用pandas原生的向量化操作即可,不需要写逐行循环,性能最优:
df[['A', 'B']] = df['A'].tolist()
核心逻辑:A列每个元素都是长度固定为2的元组,调用tolist()会把整列元组转换为n行2列的嵌套列表,赋值给['A','B']列时会自动按位置匹配——元组第一个元素覆盖原A列,第二个元素写入新增的B列。
如果后续需要叠加自定义判断逻辑,也可以用序列下标索引的方式取值,同样是向量化操作,运行效率比apply更高:
df['B'] = df['A'].str[1] df['A'] = df['A'].str[0]
执行完上述代码后,得到的DataFrame和目标结构完全一致:
ID A B 0 0 1 [a] 1 1 2 [a,b] 2 2 3 [c,a,b]
注意:上述方法要求A列所有元组长度均为2,如果存在长度不匹配的元组会触发赋值报错。
内容的提问来源于stack exchange,提问作者user3046211
相关产品推荐
相关产品推荐

