我们可以select_dtypes 只获取数字列,然后transpose (T) 并将DataFrame values 转换为列表。最后使用permutations 得到所有可能的长度为 2 的对:
from itertools import permutations
import pandas as pd
df = pd.DataFrame({
'Names': ['Robert', 'Dan'], 'Henry': [54, 22], 'Adam': [0, 31],
'Rachel': [0, 0], 'Jug': [6, 0], 'Jesscia': [5, 55], 'May': [8, 4],
'Peter': [24, 8]
})
output = list(
map(list,
permutations(df.select_dtypes(include='number').T.values.tolist(), 2)
)
)
output:
[[[54, 22], [0, 31]],
[[54, 22], [0, 0]],
[[54, 22], [6, 0]],
[[54, 22], [5, 55]],
[[54, 22], [8, 4]],
[[54, 22], [24, 8]],
[[0, 31], [54, 22]],
[[0, 31], [0, 0]],
[[0, 31], [6, 0]],
[[0, 31], [5, 55]],
[[0, 31], [8, 4]],
[[0, 31], [24, 8]],
[[0, 0], [54, 22]],
[[0, 0], [0, 31]],
[[0, 0], [6, 0]],
[[0, 0], [5, 55]],
[[0, 0], [8, 4]],
[[0, 0], [24, 8]],
[[6, 0], [54, 22]],
[[6, 0], [0, 31]],
[[6, 0], [0, 0]],
[[6, 0], [5, 55]],
[[6, 0], [8, 4]],
[[6, 0], [24, 8]],
[[5, 55], [54, 22]],
[[5, 55], [0, 31]],
[[5, 55], [0, 0]],
[[5, 55], [6, 0]],
[[5, 55], [8, 4]],
[[5, 55], [24, 8]],
[[8, 4], [54, 22]],
[[8, 4], [0, 31]],
[[8, 4], [0, 0]],
[[8, 4], [6, 0]],
[[8, 4], [5, 55]],
[[8, 4], [24, 8]],
[[24, 8], [54, 22]],
[[24, 8], [0, 31]],
[[24, 8], [0, 0]],
[[24, 8], [6, 0]],
[[24, 8], [5, 55]],
[[24, 8], [8, 4]]]