我有一个数据帧,有700行和5100列。每行都包含真或假。使用此df,我想测试列的所有可能组合,并使用结果测试每行是否等于True。
前几天,我在这个帖子中得到了一位用户的极好帮助:如何在python中测试所有可能的组合与真/假陈述?,建议我使用itertools和“产品”中的“组合”。
这对于小型数据集工作正常。但是,当将此方法应用于我的(大得多的)数据集时,在测试超过2的组合时,内存不足。
我想要的输出与下面的示例类似,但我不会耗尽内存。
感谢您的任何帮助。
小数据集的建议方法:
import pandas as pd
from itertools import combinations
df1 = pd.DataFrame({"Main1": [True, False, False, False, False, True, True],
"Main2": [False, False, True, False, True, True, False],
"Main3": [True, False, True, True, True, True, False]})
df2 = pd.DataFrame({"Sub1": [False, False, True, False, True, False, True],
"Sub2": [False, True, False, False, True, False, True],
"Sub3": [True, False, True, False, False, False, True]})
df3 = df1.join(df2)
all_combinations = list(combinations(df3.columns, 2)) + \
list(combinations(df3.columns, 3))
for combination in all_combinations:
df3["".join(list(combination))] = df3[list(combination)].product(axis=1).astype(bool)
df3.drop(labels=["Main1", "Main2", "Main3", "Sub1", "Sub2", "Sub3"], axis=1, inplace=True)
df3
Main1Main2 Main1Main3 ... Main3Sub2Sub3 Sub1Sub2Sub3
0 False True ... False False
1 False False ... False False
2 False False ... False False
3 False False ... False False
4 False False ... False False
5 True True ... False False
6 False False ... False True
吃鸡游戏
相关分类