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

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

根據(jù)發(fā)生次數(shù)合并行,同時(shí)在 Python 中的數(shù)據(jù)幀中維護(hù)唯一值

根據(jù)發(fā)生次數(shù)合并行,同時(shí)在 Python 中的數(shù)據(jù)幀中維護(hù)唯一值

浮云間 2022-08-25 15:14:02
數(shù)據(jù)幀:Name         Category        Port          ClassA                Code         443        string1A                Code          80        string2B                Math         443        string3A                Code         443        string1B                Math          80        string4我嘗試過的代碼:df1 = df.name.ne(df.name.shift())count = df.name.groupby(df1.cumsum()).size()我得到的輸出:Name     Category      Port       Class     CountA            Code       443     string1         2B            Math       443     string3         1A            Code       443     string1         1B            Math        80     string4         1我想要的輸出:Name    Category         Port               Class   CountA           Code      443, 80    string1, string2       2B           Math          443             string3       1A           Code          443             string1       1B           Math           80             string4       1任何幫助是值得贊賞的。
查看完整描述

2 回答

?
臨摹微笑

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

使用 和 具有適當(dāng)?shù)墓δ軕?yīng)該會(huì)得到你想要的。下面的用法將導(dǎo)致保留所有值,如果您只想要唯一的值,則可以將其更改為 。groupbyagglistset


df['cumsum'] = df.Name.ne(df.Name.shift()).cumsum()

df2 = df.groupby(df["cumsum"]).agg({'Name': 'first', 'Category': 'first', 'Port': list, 'Class': [list, 'count']})

df2.columns = df2.columns.droplevel(1).values[:-1].tolist() + ['Count']

df2 = df2.reset_index(drop=True)

這將為您提供:


  Name  Category       Port               Class  Count

0    A      Code  [443, 80]  [string1, string2]      2

1    B      Math      [443]           [string3]      1

2    A      Code      [443]           [string1]      1

3    B      Math       [80]           [string4]      1


查看完整回答
反對(duì) 回復(fù) 2022-08-25
?
侃侃無極

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

這里的關(guān)鍵是用通用名稱和類別來標(biāo)識(shí)連續(xù)的行。一個(gè)簡單的技巧是使用和:shiftcumsum


x = pd.Series(np.where((df['Name'] == df1['Name'])&(df['Category'] == df1['Category']), 0, 1),

              index = df.index).cumsum()

完成此操作后,a 和 將完成以下工作:groupbyagg


df.assign(Count=1, Port=df['Port'].astype(str)).groupby(['Name', 'Category',x]).agg(

    {'Port': ', '.join, 'Class': ', '.join, 'Count': 'sum'}).reset_index().drop(columns='level_2')

它給出:


  Name Category     Port             Class  Count

0    A     Code  443, 80  string1, string2      2

1    A     Code      443           string1      1

2    B     Math      443           string3      1

3    B     Math       80           string4      1


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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