猿问

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

带有集合列的简单 DataFrame:


df = pd.DataFrame({'a': [{0,1}, {1,2}, {}], 'b': [{1,2},{2,3,4}, {3}]})

df

        a          b

0  {0, 1}     {1, 2}

1  {1, 2}  {2, 3, 4}

2      {}        {3}

我想将多个特定的集合列转换为列表列。我正在使用apply,但这不起作用:


df[['a','b']].apply(lambda x: list(x))

        a          b

0  {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  b

0  1  4

1  2  5

2  3  6

那么,是否有一个单行可以在不遍历列的情况下完成我想要做的事情?


侃侃尔雅
浏览 220回答 2
2回答

人到中年有点甜

我想你正在寻找applymap。此外,lambda x: list(x)可以简化为list:In [5]: df[['a', 'b']].applymap(list)Out[5]:        a          b0  [0, 1]     [1, 2]1  [1, 2]  [2, 3, 4]2      []        [3]
随时随地看视频慕课网APP

相关分类

Python
我要回答