第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在Pandas中使用大型數(shù)據(jù)集的所有可能結(jié)果并對(duì)結(jié)果進(jìn)行排序

在Pandas中使用大型數(shù)據(jù)集的所有可能結(jié)果并對(duì)結(jié)果進(jìn)行排序

MMTTMM 2022-09-27 10:41:38
我有一個(gè)數(shù)據(jù)幀,有700行和5100列。每行都包含真或假。使用此df,我想測(cè)試列的所有可能組合,并使用結(jié)果測(cè)試每行是否等于True。前幾天,我在這個(gè)帖子中得到了一位用戶的極好幫助:如何在python中測(cè)試所有可能的組合與真/假陳述?,建議我使用itertools和“產(chǎn)品”中的“組合”。這對(duì)于小型數(shù)據(jù)集工作正常。但是,當(dāng)將此方法應(yīng)用于我的(大得多的)數(shù)據(jù)集時(shí),在測(cè)試超過(guò)2的組合時(shí),內(nèi)存不足。我想要的輸出與下面的示例類似,但我不會(huì)耗盡內(nèi)存。感謝您的任何幫助。小數(shù)據(jù)集的建議方法:import pandas as pdfrom itertools import combinationsdf1 = 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  Sub1Sub2Sub30       False        True  ...          False         False1       False       False  ...          False         False2       False       False  ...          False         False3       False       False  ...          False         False4       False       False  ...          False         False5        True        True  ...          False         False6       False       False  ...          False          True
查看完整描述

1 回答

?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

所以,我并不為這個(gè)感到驕傲,但也許它有機(jī)會(huì)獲勝 :)......


我認(rèn)為你需要離開數(shù)據(jù)幀,因?yàn)樗荒荛L(zhǎng)得足夠大,無(wú)法正確保存你的結(jié)果。如果您的結(jié)果可預(yù)測(cè)地稀疏,則可以使用替代結(jié)構(gòu),如下所示。


請(qǐng)注意,對(duì)于您正在做的事情來(lái)說(shuō),這將是一個(gè)很長(zhǎng)的循環(huán),22B x數(shù)據(jù)幀的長(zhǎng)度,因此超過(guò)一萬(wàn)億次命中,但是如果您只需要做一次,誰(shuí)在乎。中的組合函數(shù)是一個(gè)生成器,因此它將具有內(nèi)存效率。itertools


我認(rèn)為您正在尋找上面“全部為 True”的結(jié)果,因?yàn)槟谑褂卯a(chǎn)品運(yùn)算符。我在評(píng)論中說(shuō)錯(cuò)了。


如果完成,您可以在下面添加第二個(gè)循環(huán)來(lái)覆蓋大小2的組合!:)


import pandas as pd

from itertools import combinations


df = 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],

                    "Sub1": [False, False, True, False, True, False, True],

                    "Sub2": [False, True, False, False, True, False, True],

                    "Sub3": [True, False, True, False, False, False, True]})


print(df)

data = df.to_dict('index')


# test to see if it looks right for row 0

print(data[0])


# now the data is in a nested dictionary, which should be more "iterable"

results = []


for combo in combinations(df.columns, 3):

    for key in data:  # iterate through the rows in the data...  index is key.

        values = set(data[key][col] for col in combo)

        if all(values):

            results.append((key, combo))


# inspect results...

for result in results:

    print(f'row: {result[0]} columns: {results[1]} product is TRUE')

收益 率:


   Main1  Main2  Main3   Sub1   Sub2   Sub3

0   True  False   True  False  False   True

1  False  False  False  False   True  False

2  False   True   True   True  False   True

3  False  False   True  False  False  False

4  False   True   True   True   True  False

5   True   True   True  False  False  False

6   True  False  False   True   True   True

{'Main1': True, 'Main2': False, 'Main3': True, 'Sub1': False, 'Sub2': False, 'Sub3': True}

row: 5 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 0 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 6 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 6 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 6 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 2 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 4 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 4 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 2 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 4 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 2 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 4 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 2 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

row: 6 columns: (0, ('Main1', 'Main3', 'Sub3')) product is TRUE

[Finished in 0.6s]


查看完整回答
反對(duì) 回復(fù) 2022-09-27
  • 1 回答
  • 0 關(guān)注
  • 89 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)