从熊猫数据框中的多个 oclumns 创建列表

时间:2021-01-31 10:21:01

标签: python pandas list concatenation

我有以下数据框:

name      age   year   salary1   salary2   salary3  salary4
Rodrigo   28    2021   1945       2312     4567     3214
Neil      26    2021   3546       6657     -3200    1855
Loti      34    5500   4671       3895     5512     7864
...

当这是结果输出时,我想创建一个新列,该列将包含列salary1,salary2,salary3 和salary4 的值列表:

name      age   year   salary1   salary2   salary3  salary4     new_colum
Rodrigo   28    2021   1945       2312     4567     3214        [1945,2312,4567,3214]
Neil      26    2021   3546       6657     -3200    1855        [3546,6657,-3200,1855]
Loti      34    2021   4671       3895     5512     7864        [4671,3895,5512,7864]

我尝试通过将每列的类型更改为字符串然后添加它们来连接相关列:

df['new_column'] = df['salary1'].astype(str) + ',' + \
                   df['salary2'].astype(str) + ',' + \
                   df['salary3'].astype(str) + ',' + \
                   df['salary4'].astype(str)

确实连接了列,但不会使它们成为列表,并且在我仍然需要数字时将类型更改为字符串。

我的问题是如何创建包含四个列值列表的新列?

2 个答案:

答案 0 :(得分:2)

试试这个:

df['new_column'] = df[['salary1', 'salary2', 'salary3', 'salary 4']].values.tolist()

答案 1 :(得分:1)

使用 apply 的另一种可能性是

df['new_col'] = df[['salary1', 'salary2', 'salary3', 'salary4']].apply(lambda r: list(r), axis=1)

但是请注意,这可能比另一个答案中建议的使用 .values.tolist() 而不是 .apply 慢。