【发布时间】:2019-11-18 09:49:21
【问题描述】:
我正在尝试获取数据框八列之间每个可能组合的计数(其中所有行值为 1)。基本上我需要了解存在多少次不同的重叠。
我尝试使用itertools.product 来获取所有组合,但它似乎不起作用。
import pandas as pd
import numpy as np
import itertools
df = pd.read_excel('filename.xlsx')
df.head(15)
a b c d e f g h
0 1 0 0 0 0 1 0 0
1 1 0 0 0 0 0 0 0
2 1 0 1 1 1 1 1 1
3 1 0 1 1 0 1 1 1
4 1 0 0 0 0 0 0 0
5 0 1 0 0 1 1 1 1
6 1 1 0 0 1 1 1 1
7 1 1 1 1 1 1 1 1
8 1 1 0 0 1 1 0 0
9 1 1 1 0 1 0 1 0
10 1 1 1 0 1 1 0 0
11 1 0 0 0 0 1 0 0
12 1 1 1 1 1 1 1 1
13 1 1 1 1 1 1 1 1
14 0 1 1 1 1 1 1 0
print(list(itertools.product(new_df.columns)))
预期的输出将是一个数据帧,其中包含每个有效组合的行数 (n)(其中行中的值全为 1)。
例如:
a b
0 1 0
1 1 0
2 1 0
3 1 0
4 1 0
5 0 1
6 1 1
7 1 1
8 1 1
9 1 1
10 1 1
11 1 0
12 1 1
13 1 1
14 0 1
愿意
combination count
a 12
a_b 7
b 9
请注意,输出需要包含a 和h 之间可能的所有组合,而不仅仅是成对的
【问题讨论】:
标签: python python-3.x pandas numpy itertools