簡體   English   中英

pandas 根據列中的重復值對 dataframe 中的行進行分組,並在 Uniqe ID 值之后重復所有行

[英]The pandas group the rows in the dataframe based on the repeated values in the column and repeat all after an Uniqe ID value

*輸入 DataFrame

 ` C1 C2 0 WID 94556 1 LB INTRO: 2 FNAME Misg, Hugh 3 NAME Misg H 4 AD NY, USA. 5 FNAME Iqbal, Zee 6 NAME Iqbal, Z 7 AD 302, Paris, Fransh. 8 FNAME Talega, hama 9 NAME Talega h 10 AD New York, USA. suresh@usa.us 11 AD Delhi, New Delhi, 12 OTO NOTNLM 13 OTO Nano 14 OT Nano 15 WID 1564576 16 OM 20181211 17 LB INTROD: 18 FNAME Mik, Jeb 19 NAME Mik, J 20 AD SB,UK, 21 FNAME Bala, E 22 NAME Bala E 23 AD Paris, Fransh. 24 LA eng 25 OTO NLM 26 OT agents 27 OT Nano

現在我需要根據列值(用“;”分隔的相應值)對 dataframe 進行分組,並且我應該得到以下(= WID 數#)不同的行。

我試過這個df=df['C2'].groupby([df.C1],sort=False).apply('; '.join).reset_index()但它正在對列中的每個唯一元素進行分組,我想要像下面這樣的行(“WID”將根據數據集而有所不同)

輸入 dataframe

df = pd.DataFrame({'C1' : ['WID', 'LB', 'FNAME', 'NAME', 'AD' ,'FNAME', 'NAME', 'AD','FNAME', 'NAME', 'AD','AD', 'OTO','OTO', 'OT','WID','OM','LB','FNAME','NAME','AD','FNAME','NAME','AD','LA','OTO','OT','OT']
      ,'C2' : ['94556', 'INTRO:','Misg, Hugh'
               ,'Misg H','NY,  USA.',' Iqbal, Zee'
               ,'Iqbal, Z',' 302, Paris, Fransh.','Talega, hama','Talega h','New York, USA.  suresh@usa.us','Delhi, New Delhi,'
               ,'NOTNLM','Nano','Nano','1564576','20181211',' INTROD:',' Mik, Jeb','Mik, J','SB,UK,','Bala, E','  Bala E','Paris, Fransh.','eng','NLM',' agents','  Nano']})

預期的 output 為:

在此處輸入圖像描述

如果它是鏈接中的圖像,我認為您可以使用以下代碼實現它。 如果存在相同的列,則需要預先組合它們。

df['new_idx'] = 0
cnt, w = 0, 0 
for i in range(len(df)):
    if df['C1'].iloc[i] == 'WID':
        cnt +=1
    df['new_idx'].iloc[i] = w + cnt

df2 = df.pivot(values='C2', index='new_idx', columns='C1').fillna('')
df2 = df2.iloc[:,[10,6,4,1,5,0,2,9,8]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM