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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據(jù)許多列中的值過濾 Pandas DataFrame?

如何根據(jù)許多列中的值過濾 Pandas DataFrame?

慕哥6287543 2022-10-05 17:53:42
我有一個名為 df 的 DataFrame,它有超過 40,000 行和 90 多列。這是它的外觀片段:p1 p2 p3 p4 value 0  1  0  1   51  0  1  0   41  1  0  0   60  1  0  1   2我希望能夠找到 p1、p2、p3、p4 的獨(dú)特組合的“價值”總和。因此,當(dāng) p2=1 和 p4=1 時(每組 p1、p2、p3、p4 中總是恰好有兩個 1),在這種情況下,它們的“值”列的總和將為 7。這很容易找到df[(df.p2 == 1) & (df.p4 == 1)].value.sum()。但是,我不知道如何為我的DataFrame df 執(zhí)行此操作,因為它有多大。它不是 p1-p4,而是由 p1-p89 組成。我最初的想法是創(chuàng)建一個新列,其中包含我要過濾的 89 列的值:unique_list = []for n in range(0,df.shape[0]):    unique_list.append(str(df.values[n][1:90]))df['identifier'] = unique_list然后每一行都會有這 89 個值的標(biāo)識符,所以我可以根據(jù)該行進(jìn)行排序。然而,這需要相當(dāng)長的時間。我估計這個 for 循環(huán)將需要大約 40 分鐘才能完成。這不是令人難以忍受的長——當(dāng)我完成提交這個問題時,它可能會接近完成。但是為了學(xué)習(xí),我不禁認(rèn)為必須有更有效的方法來完成這一點(diǎn)。那么,有嗎?有沒有辦法讓我在不需要創(chuàng)建新的標(biāo)識符列的情況下做到這一點(diǎn)?如果重要的話,我的最終目標(biāo)是創(chuàng)建一個新的 DataFrame,其中行數(shù)是 p1-p89 的唯一組合數(shù)。新 DataFrame 中的 'value' 列將是前一個 DataFrame 中該組合的所有實例的 'value' 列的總和,并且每個唯一組合都會有一個新的 find 'value' 列的總和p1-p89。
查看完整描述

1 回答

?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗 獲得超6個贊

似乎您可以使用groupby.


# Get everything except the value column.

group_cols = [o for o in df.columns if o != 'value']


# Group into unique combinations, sum the value column.

unique_counts = df.groupby(group_cols).sum().reset_index()


查看完整回答
反對 回復(fù) 2022-10-05
  • 1 回答
  • 0 關(guān)注
  • 86 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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