我试图将新行中的每一行的值组合在一起。 Add only all string values of pandas row as list in a new column不适用于此项目,因此我尝试了一些不同的操作,但结果却很奇怪。

这是一个示例数据集:

data = pd.DataFrame({'Id' : ['001','002', '003'], 'pred_m1' : [3,2,4], 'pred_m2' : [5,6,4], 'pred_m3' : [6,4,6]})



我想要的是:

data = pd.DataFrame({'Id' : ['001','002', '003'], 'pred_list' : [[3,5,6],[2,6,4],[4,4,6]]})


我已经做到了:

for i in data:
    data['pred_list'] = list(pd.DataFrame(data['pred_m1'], data['pred_m2'], data['pred_m3']))
    print(data)


但是它给了我一个奇怪的输出,我不明白出了什么问题

    Id  pred_m1  pred_m2  pred_m3  list
0  001        3        5        6     6
1  002        2        6        4     4
2  003        4        4        6     6
    Id  pred_m1  pred_m2  pred_m3  list
0  001        3        5        6     6
1  002        2        6        4     4
2  003        4        4        6     6
    Id  pred_m1  pred_m2  pred_m3  list
0  001        3        5        6     6
1  002        2        6        4     4
2  003        4        4        6     6
    Id  pred_m1  pred_m2  pred_m3  list
0  001        3        5        6     6
1  002        2        6        4     4
2  003        4        4        6     6


有人在这个问题上有帮助吗?谢谢!

最佳答案

在将agg列设置为索引然后在axis=1之后,可以在Id上使用reset_index

data.set_index('Id').agg(list,axis=1).reset_index(name='pred_list')




    Id  pred_list
0  001  [3, 5, 6]
1  002  [2, 6, 4]
2  003  [4, 4, 6]

关于python - 将一行的所有值作为列表添加到新列中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59754358/

10-10 14:50