<分区>
我有一个像这样的 python pandas 数据框 df:
a b
1 3
3 6
5 7
6 4
7 8
我想把它转移到一个列表中:
[(1,3),(3,6),(5,7),(6,4),(7,8)]
谢谢。
<分区>
我有一个像这样的 python pandas 数据框 df:
a b
1 3
3 6
5 7
6 4
7 8
我想把它转移到一个列表中:
[(1,3),(3,6),(5,7),(6,4),(7,8)]
谢谢。
最佳答案
如果性能很重要,请使用列表理解:
[tuple(r) for r in df.to_numpy()]
# [(1, 3), (3, 6), (5, 7), (6, 4), (7, 8)]
注意:对于 pandas < 0.24,请改用 df.values
。
如果你遍历列表而不是 numpy 数组,你可能会发现更好的性能:
[tuple(r) for r in df.to_numpy().tolist()]
# [(1, 3), (3, 6), (5, 7), (6, 4), (7, 8)]
此方法适用于任意数量的列。但是,如果您想选择一组特定的列进行转换,您可以预先选择它们。
[tuple(r) for r in df[['a', 'b']].to_numpy()]
# [(1, 3), (3, 6), (5, 7), (6, 4), (7, 8)]
另一种选择是使用 map
。
list(map(tuple, df.to_numpy()))
# [(1, 3), (3, 6), (5, 7), (6, 4), (7, 8)]
这在性能方面与列表理解大致相同。你可以用同样的方式概括。
另一种选择是使用 apply
并将结果转换为列表:
df.apply(tuple, axis=1).tolist()
# [(1, 3), (3, 6), (5, 7), (6, 4), (7, 8)]
这个比较慢,所以不推荐。
关于python - 将数据框转换为元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45285244/