Dataframe有
ID col col2 col3 col4
1 A 50 S 1
1 A 52 M 4
1 B 45 N 8
1 C 18 S 7
数据框的需求
ID col colA colB colC colD colE colF
1 A 50 52 S M 1 4
1 B 45 NULL N NULL 8 NULL
1 C 18 NULL S NULL 7 NULL
我希望每个唯一的ID+col(按ID和col分组)只有1行。 如果每个ID+col有多个条目(最多可达2个,不再多),则将col2的第一个值放入colA中,第二个值放入colB中,将col3的第一个值放入colC中,第二个值放入colD中,将col4的第一个值放入colE中,第二个值放入colF中。如果每个ID+col只有一个条目,则对于col2,将值放入colA中,colB为空等。
我试图首先创建一个计数器:
df['COUNT'] = df.groupby(['ID','col']).cumcount()+1
从这里开始,我考虑只需添加一列来表明。
if count=1 then df['colA']=df.col2
if count=2 then df['colB']=df.col2
..但这仍将导致与原始df相同数量的行。
.fillna(0)
可以很好地处理None
、NaN
和NaT
。 - jezrael