我有以下数据集的Python:变换数据集
id type value
0 1 A 10
1 1 C 120
2 2 B 20
3 2 C 40
4 3 A 10
5 3 B 50
我想在python改造它要像(1,A,10,C,120) (2,B,20,C,40) (3,A,10,B,50)
任何建议将不胜感激
我有以下数据集的Python:变换数据集
id type value
0 1 A 10
1 1 C 120
2 2 B 20
3 2 C 40
4 3 A 10
5 3 B 50
我想在python改造它要像(1,A,10,C,120) (2,B,20,C,40) (3,A,10,B,50)
任何建议将不胜感激
执行groupby
WRT 编号为的列。通过将其他两列转换为list
,并将每个组编号旁边的对应于id的唯一值进行迭代,从而遍历每个组。最后,将它们转换为tuple
并将它们附加到列表中。
grouped = df.groupby('id')
L = []
for _, grp in grouped:
L.append(tuple(grouped.get_group(_)['id'].unique().tolist() + grp[['type','value']].values.ravel().tolist()))
print(L)
#[(1, 'A', 10, 'C', 120), (2, 'B', 20, 'C', 40), (3, 'A', 10, 'B', 50)]
谢谢@Nickil Maveli,但是当我运行你的实现后价值另一个'L'被追加,有反正我可以摆脱它吗? –
你的意思是你不想把它们作为一个列表?你想如何存储它们?您也可以尝试编辑问题以显示发生了什么问题。 –
您可以使用:
L = df.groupby('id').apply(lambda x: tuple([x['id'].iat[0]] +
x[['type','value']].values.flatten().tolist()))
.tolist()
print (L)
[(1, 'A', 10, 'C', 120), (2, 'B', 20, 'C', 40), (3, 'A', 10, 'B', 50)]
开始从[这里](https://docs.python.org/3/tutorial/),请阅读[这](https://开头的文档.python.org/3/library/ itertools.html)和[this](https://docs.python.org/3/tutorial/datastructures.html)。最后使用[this](https://docs.python.org/3/library/csv.html)并解决你的问题。至于这个问题,Stack Overflow太广泛了。见[问]和[mcve]。 –
另外,观看[this](http://pandas.pydata.org/talks.html#pycon-us-2015)视频并观看[this](http://pandas.pydata.org/pandas-docs/版本/ 0.18.1/api.html#id5)在熊猫文档 – wwii