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

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

使用 Pandas 中的條件計算多列中每個組的唯一值

使用 Pandas 中的條件計算多列中每個組的唯一值

蕭十郎 2023-07-11 16:57:23
更新了示例數(shù)據(jù)集我有以下數(shù)據(jù):location ID  ValueA        1   1 A        1   1A        1   1 A        1   1A        1   2 A        1   2A        1   2 A        1   2A        1   3 A        1   4 A        2   1 A        2   2 A        3   1 A        3   2B        4   1 B        4   2 B        5   1B        5   1 B        5   2B        5   2 B        6   1 B        6   1B        6   1B        6   1 B        6   1B        6   2B        6   2B        6   2   B        7   1 我想計算每個位置和以下輸出的每個 ID 的唯一值(僅當(dāng)值等于 1 或 2 時)。location ID_Count  Value_CountA        3         6B        4         7我嘗試使用df.groupby(['location'])['ID','value'].nunique(),但我只得到唯一的值計數(shù),就像我得到 A 的 value_count 為 4,B 的 value_count 為 2。
查看完整描述

4 回答

?
猛跑小豬

TA貢獻1858條經(jīng)驗 獲得超8個贊

嘗試對值agg進行切片。IDTrue


對于更新的示例,您只需在處理之前刪除重復(fù)項即可。其余的都一樣


df = df.drop_duplicates(['location', 'ID', 'Value'])


df_agg = (df.Value.isin([1,2]).groupby(df.location)

                              .agg(ID_count=lambda x: df.loc[x[x].index, 'ID'].nunique(), 

                                   Value_count='sum'))


Out[93]:

          ID_count  Value_count

location

A                3            6

B                4            7


查看完整回答
反對 回復(fù) 2023-07-11
?
飲歌長嘯

TA貢獻1951條經(jīng)驗 獲得超3個贊

與 anky 大致相同,但隨后使用Series.whereandnamed aggregations因此我們可以在 groupby 中創(chuàng)建列時重命名列。


grp = df.assign(Value=df['Value'].where(df['Value'].isin([1, 2]))).groupby('location')

grp.agg(

    ID_count=('ID', 'nunique'),

    Value_count=('Value', 'count')

).reset_index()

  location  ID_count  Value_count

0        A         3            6

1        B         4            7


查看完整回答
反對 回復(fù) 2023-07-11
?
千巷貓影

TA貢獻1829條經(jīng)驗 獲得超7個贊

讓我們嘗試使用與其他答案非常相似的方法。這次我們先過濾:


(df[df['Value'].isin([1,2])]

   .groupby(['location'],as_index=False)

   .agg({'ID':'nunique', 'Value':'size'})

)

輸出:


  location  ID  Value

0        A   3      6

1        B   4      7


查看完整回答
反對 回復(fù) 2023-07-11
?
12345678_0001

TA貢獻1802條經(jīng)驗 獲得超5個贊

IIUC,你可以嘗試series.isin一下groupby.agg


out = (df.assign(Value_Count=df['Value'].isin([1,2])).groupby("location",as_index=False)

                                   .agg({"ID":'nunique',"Value_Count":'sum'}))

print(out)


  location  ID  Value_Count

0        A   3          6.0

1        B   4          7.0


查看完整回答
反對 回復(fù) 2023-07-11
  • 4 回答
  • 0 關(guān)注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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