为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas:将 *multiple* 列转换为列表列

Pandas:将 *multiple* 列转换为列表列

侃侃尔雅 2021-10-19 10:44:02
带有集合列的简单 DataFrame:df = pd.DataFrame({'a': [{0,1}, {1,2}, {}], 'b': [{1,2},{2,3,4}, {3}]})df        a          b0  {0, 1}     {1, 2}1  {1, 2}  {2, 3, 4}2      {}        {3}我想将多个特定的集合列转换为列表列。我正在使用apply,但这不起作用:df[['a','b']].apply(lambda x: list(x))        a          b0  {0, 1}     {1, 2}1  {1, 2}  {2, 3, 4}2      {}        {3}不过,它适用于单列/系列:df['a'].apply(lambda x: list(x))0    [0, 1]1    [1, 2]2        []Name: a, dtype: object一个不同的函数,在不涉及列表的不同 DataFrame 上,当然可以按预期在多个列上工作:df2 = pd.DataFrame({'a':[0,1,2], 'b':[3,4,5]})df2[['a','b']].apply(lambda x: x + 1)   a  b0  1  41  2  52  3  6那么,是否有一个单行可以在不遍历列的情况下完成我想要做的事情?
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我想你正在寻找applymap。此外,lambda x: list(x)可以简化为list:


In [5]: df[['a', 'b']].applymap(list)

Out[5]:

        a          b

0  [0, 1]     [1, 2]

1  [1, 2]  [2, 3, 4]

2      []        [3]


查看完整回答
反对 回复 2021-10-19
  • 2 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号