首页 > 解决方案 > 熊猫取消列出链中的一个数据框列

问题描述

我想将一个 Pandas 数据框列取消列出为链中的多个列。像这样,但理想情况下是在一个链中以提高可读性,因为之后有更多的步骤。这是我的示例,它不起作用。

d1 = {
    'teams': [['SF', 'NYG'],['SF', 'NYG'],['SF', 'NYG']],
    'bal':[5,7,8]
}

df2 = pd.DataFrame(d1)

#unlist teams column in chain
res=(df2
   .pd.DataFrame(df2['teams'].to_list(), columns=['team1','team2'])
   .assign(bal2=lambda x: x['bal']*2)
)

#final result like this
d3 = {
    'team1': ['SF','SF','SF'],
    'team2': ['NYG','NYG','NYG'],
    'bal':[5,7,8],
    'bal2':[10,14,16]
}

df4 = pd.DataFrame(d3)

标签: pythonpandasdataframetolist

解决方案


如果DataFrame.pop用于提取列并转换为DataFramethen 可以添加DataFrame.join以附加所有其他列:

res= (pd.DataFrame(df2.pop('teams').to_list(), columns=['team1','team2'], index=df2.index)
        .join(df2)
        .assign(bal2 = lambda x: x['bal']*2))

print (res)
  team1 team2  bal  bal2
0    SF   NYG    5    10
1    SF   NYG    7    14
2    SF   NYG    8    16

推荐阅读