如果性能很重要,请使用列表推导:
[tuple(r) for r in df.to_numpy()]
# [(1, 3), (3, 6), (5, 7), (6, 4), (7, 8)]
注意:对于 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)]
这个比较慢,所以不推荐。