Pandas脊柱标志的可变组合

shyt4zoc  于 2022-11-20  发布在  其他
关注(0)|答案(2)|浏览(101)

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

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])

现在我想建立一个函数,接收一个 Dataframe (= df)和一个整数(= m)。例如m = 2,现在该函数应该将每两个列的指定组合在一起。输出应该是一个包含这些对的列表。例如m=2 und df:[[ID, age],[ID, gender],[ID, overweight],[age, gender], [age, overweight], [gender, overweight]]
有没有人知道我是怎么做到的?我的问题是m和列的数量是可变的。

stszievb

stszievb1#

您可以直接在 Dataframe 上使用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')]
dsekswqp

dsekswqp2#

from itertools import combinations

n=2

[df[list(i)] for i in combinations(df.columns,n)]

[   ID  age
 0   1   46
 1   2   48
 2   3   55
 3   4   55,
    ID  gender
 0   1  female
 1   2  female
 2   3    male
 3   4    male,
    ID overweight
 0   1          y
 1   2          n
 2   3          y
 3   4          y,
    age  gender
 0   46  female
 1   48  female
 2   55    male
 3   55    male,
    age overweight
 0   46          y
 1   48          n
 2   55          y
 3   55          y,
    gender overweight
 0  female          y
 1  female          n
 2    male          y
 3    male          y]

相关问题