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

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

為每個(gè)唯一值查找多列的眾數(shù)

為每個(gè)唯一值查找多列的眾數(shù)

函數(shù)式編程 2021-12-21 16:00:22
我有一個(gè)包含 ID 列和 10 個(gè)不同常規(guī)服務(wù)列和 1 個(gè)高級(jí)服務(wù)列的數(shù)據(jù)集。一個(gè)人可以多次進(jìn)入,因此 ID 可以重復(fù)。在一個(gè)人的訪問(wèn)期間,他們還可以購(gòu)買(mǎi)最多 10 項(xiàng)常規(guī)服務(wù),外加 1 項(xiàng)高級(jí)服務(wù)。我希望能夠確定每個(gè)獨(dú)特的人購(gòu)買(mǎi)最多的常規(guī)服務(wù),以及他們購(gòu)買(mǎi)最多的優(yōu)質(zhì)服務(wù)。如果任何服務(wù)的模式對(duì)于普通或高級(jí)服務(wù)都相同,則任何服務(wù)都可以。使用熊貓,我的數(shù)據(jù)框如下所示:ID    Service1    Service2    Service3 .... Service10    Premium----------------------------------------------------------------1     A           B           C             Z            XX1     B           C           D             Y            XY1     A           B           C             O            XX2     R           S           T             B            XX我試過(guò) df.mode() 和 pd.Series.mode() 但我不斷收到錯(cuò)誤。我正在嘗試生成唯一客戶(hù)端列表(按 ID)以及所有列的模式。我還需要一種單列模式。這是針對(duì)常規(guī)服務(wù)的(需要找到超過(guò) 10 列的模式):def servicemode(group):    svcs_cols = [group['Service1'],               group['Service2'],               group['Service3'],               group['Service4'],               group['Service5'],               group['Service6'],               group['Service7'],               group['Service8'],               group['Service9'],               group['Service10']]    return pd.concat(dx_cols).dropna(inplace=False).agg(lambda x: pd.Series.mode(x)[0])df.groupby('ID').apply(servicemode)這是用于高級(jí)服務(wù)(需要在單列中找到模式):df.groupby('ID')['Premium'].agg(lambda x: pd.Series.mode(x)[0])這是想要的結(jié)果:ID    RegSvcMode    PremiumSvcMode1     B             XX2     R             XX如果可能的話(huà),我更喜歡使用純熊貓——任何建議將不勝感激。
查看完整描述

1 回答

?
浮云間

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

我不確定您的原始代碼有什么問(wèn)題,但這是一種解決方案:


import pandas as pd

from itertools import chain


>>>df

   Service1 Service2 Service3 Service10

ID

1         A        B        C         Z

1         B        C        D         Y

1         A        B        C         O

2         R        S        T         B


df_regsvc = df.groupby(df.index)['Service1','Service2','Service3','Service10'] \

    .apply(lambda x : list(chain.from_iterable([*x.values]))) \

    .apply(lambda x: max(x, key=x.count)).to_frame()


>>>df_regsvc

ID

1    B

2    R

dtype: object


# Join it with the aggregate for the Premium column

df_premium = df.groupby(df.index)['Premium'].agg(lambda x: pd.Series.mode(x)[0]).to_frame()

df_agg = df_regsvc.join(df_premium)


>>>df_agg

    0 Premium

ID

1   B         XX

2   R         XX


查看完整回答
反對(duì) 回復(fù) 2021-12-21
  • 1 回答
  • 0 關(guān)注
  • 145 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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