【问题标题】:Pandas unlist one dataframe column in chain熊猫取消列出链中的一个数据框列
【发布时间】:2021-12-22 02:11:17
【问题描述】:

我想将一个 Pandas 数据框列取消列出为链中的多个列。与this 类似,但最好是在一个链中以提高可读性,因为之后还有更多步骤。这是我的示例,它不起作用。

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)

【问题讨论】:

  • @Mayank Porwal 链接的欺骗有问题,所以我认为不是欺骗。
  • @jezrael 知道了。重新打开它。

标签: python pandas dataframe tolist


【解决方案1】:

如果使用DataFrame.pop 提取列并转换为DataFrame,则可以添加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

【讨论】:

  • 我可以在链中执行此操作吗?例如在下一行使用 lambda 将 bal 乘以 2
  • @Zeus - 不确定是否了解什么是链。你能说得具体点吗?
  • 我认为在 R 中我在 python 中使用 %>% 。用于链接函数
  • 伪代码是取消列出团队,然后在下一行将 bal 乘以 2
  • res=(df2 .pd.DataFrame(df2['teams'].to_list(), columns=['team1','team2']) .assign('bal2' lambda x: x['bal']*2) )
猜你喜欢
  • 2019-05-07
  • 2023-02-21
  • 1970-01-01
  • 2019-10-30
  • 2023-04-03
  • 2016-08-09
  • 2018-05-02
  • 1970-01-01
  • 2019-04-22
相关资源
最近更新 更多