我有以下数据帧df
:
id stage days
--------------------
a1 A 1
a2 A 3
a3 A 2
a4 A 5
a1 B 1
a2 B 2
a1 C 2
a3 D 3
我对Pandas GroupBy
对象应用了lambda函数。我通过聚合每个id的stage
列创建了一个列表。在
输出如下:
a1 [A, B, C]
a2 [A, B]
a3 [A, D]
a4 [A]
现在我想为每个id
组创建一个元组列表。问题是(stage, days)
。我修改了上面的代码如下:
df2 = df.groupby('id').apply(lambda x:list((x['stage'],x['days']))).reset_index()
df2
我希望df2
像:
a1 [(A, 1), (B, 1), (C, 2)]
a2 [(A, 3), (B, 2)]
a3 [(A, 2), (D, 3)]
a4 [(A, 5)]
但是,这个输出只给出每个id的第一个(stage, days)
,它看起来不像一个元组:
a1 [[A], [1]]
a2 [[A], [3]]
a3 [[A], [2]]
a4 [[A], [5]]
我错过什么了吗?谢谢!在
数据来自Manish,创建元组列外的apply应该更快
这里有一个最小的例子。我想你想要这样的东西:
相关问题 更多 >
编程相关推荐