Python Pandas如何将单元格内多个取值拆分生成独立新行
解决方案
你可以用pandas内置的explode方法实现行列转换,全程只需链式调用3步即可完成:
import pandas as pd # 初始化原始df df = pd.DataFrame({'zips': ['11229 11226 11225', '90291 90293 90292'], 'lat': [40.6943, 34.1139], 'lng': [-73.9249, -118.4068]}) # 转换得到目标df2 df2 = ( # 第一步:将zips列的空格分隔字符串拆分为列表 df.assign(zips=df['zips'].str.split()) # 第二步:将列表的每个元素拆分为单独行,同时自动对齐lat、lng列的值,重置索引 .explode('zips', ignore_index=True) # 第三步:将zips从字符串格式转为整数格式 .astype({'zips': int}) )
低版本pandas兼容方案
如果你的pandas版本低于0.25(无explode方法),可以用如下代码实现相同效果:
df2 = ( df.set_index(['lat', 'lng'])['zips'] # 拆分字符串后扩展为多列 .str.split(expand=True) # 列转行 .stack() .reset_index(name='zips') # 删除多余的索引列 .drop('level_2', axis=1) .astype({'zips': int}) .reset_index(drop=True) )
内容的提问来源于stack exchange,提问作者windyvation
相关产品推荐
相关产品推荐

