我有一个包含三栏的熊猫数据框。我想基于项目列中的值创建一个元组的多个列表
print (df)
Project Resource Time
0 P1 0 4
1 P1 2 4
2 P1 1 10
3 P1 3 3
4 P2 1 3
5 P2 3 10
6 P2 0 11
7 P2 2 3
8 P2 0 12
9 P2 3 11
10 P2 1 3
11 P2 2 3
12 P3 0 12
我想创建的列表元组看起来像这样[[(0,4),(2,4),(1,10),(3,3)],[(1,3),(3,10),( 0,11),(2,3),(0,12),(3,11),(1,3),(2,3)],[(0,12)]]
我用下面的代码
tuples = [tuple(x) for x in data.values]
使用DataFrame.groupby
具有lambda函数和zip
,最后转换输出Series
到list
:
t = df.groupby('Project').apply(lambda x: list(zip(x['Resource'], x['Time']))).tolist()
print (t)
[[(0, 4), (2, 4), (1, 10), (3, 3)],
[(1, 3), (3, 10), (0, 11), (2, 3), (0, 12), (3, 11), (1, 3), (2, 3)],
[(0, 12)]]
另一个解决方案:
t = (df.groupby('Project')['Resource','Time']
.apply(lambda x: [tuple(y) for y in x.values])
.tolist())
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句