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')]
我可以从一个例子开始最好地解释我的问题:
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')]