从一个数据框中合并具有相似数据的列

我有一个包含重复列的表,我想将其加入一个单列。它们共享相同的列名,但我想将具有相同标题的任何列合并为一个。


我曾尝试使用合并、连接等,但没有成功。


data = [['a','a','c'],['a','b','d'],['a','c','c']]

df = pd.DataFrame(data,columns=['col1','col2','col1'])

df

co1 col2 col1

a     a    c

a     b    d

a     c    c 

我希望从这一点开始有两列“col1 with a,a,a,c,d,c”和“col2 a,b,c,nan,nan,nan”


繁花不似锦
浏览 133回答 2
2回答

森栏

首先stack,然后unstack。我们需要做更多的工作,然后才能拆开数据。u = df.stack()(u.to_frame()  .set_index(u.groupby(u.index).cumcount(), append=True)  .unstack(1)  .sort_index(level=1)[0]  .reset_index(drop=True))  col1 col20    a    a1    a    b2    a    c3    c  NaN4    d  NaN5    c  NaN另一种选择是groupby,to_dict和重建。dct = (df.groupby(df.columns, axis=1)                          # x.values.ravel().tolist()         .apply(lambda x: [z for y in x.values for z in y])         .to_dict())pd.DataFrame.from_dict(dct, orient='index').T  col1  col20    a     a1    c     b2    a     c3    d  None4    a  None5    c  None

白猪掌柜的

melt groupby 和 concatd={x : y['value'].reset_index(drop=True) for x,y in df.melt().groupby('variable')}df=pd.concat(d,1)dfOut[39]:   col1 col20    a    a1    a    b2    a    c3    c  NaN4    d  NaN5    c  NaN
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python