pandas 中列名称的可变组合

Variable combinations of column designations in pandas

我可以从一个例子开始最好地解释我的问题:

df = pd.DataFrame({"ID" : [1, 2, 3, 4], 
                  "age": [46, 48, 55, 55],
                  "gender": ['female', 'female', 'male', 'male'],
                  "overweight": ['y', 'n', 'y', 'y']},
                  index = [0, 1, 2, 3])     
    

现在我想构建一个接收数据帧 (= df) 和整数 (= m) 的函数。 例如 m = 2,现在该函数应将每个列名称成对组合。输出应该是包含这些对的列表。例如 m=2 和 df: [[ID, age],[ID, gender],[ID, overweight],[age, gender], [age, overweight], [gender, overweight]]

有谁知道我怎样才能做到这一点? 我的问题是 m 和列数是可变的。

您可以直接在数据框上使用 itertools.combinations,因为迭代发生在列名称上:

from itertools import combinations

m = 2
out = list(combinations(df, m))

输出:

[('ID', 'age'),
 ('ID', 'gender'),
 ('ID', 'overweight'),
 ('age', 'gender'),
 ('age', 'overweight'),
 ('gender', 'overweight')]