我正在遍历数据框并尝试存储每个 id 的“总”列表。数据框如下所示:id total difference 1 29 3 1 21 2 2 39 0 2 22 9到目前为止我尝试过的:total_list=[]for i, row in df.iterrows(): total_list.extend(df.total.loc[df.id==row.id].tolist())print(total_list) # this never gets printtotal_list 应该看起来像 [[29, 21], [39,22]]
1 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
只要我理解正确,就可以在不循环的情况下完成此操作。 我假设输出中的 31 应该是 21。
设置
>>> df = pd.DataFrame([[1,29,3],[1,21,2],[2,39,0],[2,22,9]], columns=['id', 'total','difference'])
>>>
>>> df
id total difference
0 1 29 3
1 1 21 2
2 2 39 0
3 2 22 9
解决方案
>>> df.groupby('id')['total'].apply(list).tolist()
[[29, 21], [39, 22]]
添加回答
举报
0/150
提交
取消