亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

從一個數據框中合并具有相似數據的列

從一個數據框中合并具有相似數據的列

繁花不似錦 2021-12-16 15:13:27
我有一個包含重復列的表,我想將其加入一個單列。它們共享相同的列名,但我想將具有相同標題的任何列合并為一個。我曾嘗試使用合并、連接等,但沒有成功。data = [['a','a','c'],['a','b','d'],['a','c','c']]df = pd.DataFrame(data,columns=['col1','col2','col1'])dfco1 col2 col1a     a    ca     b    da     c    c 我希望從這一點開始有兩列“col1 with a,a,a,c,d,c”和“col2 a,b,c,nan,nan,nan”
查看完整描述

2 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

首先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 col2

0    a    a

1    a    b

2    a    c

3    c  NaN

4    d  NaN

5    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  col2

0    a     a

1    c     b

2    a     c

3    d  None

4    a  None

5    c  None


查看完整回答
反對 回復 2021-12-16
?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

melt groupby 和 concat


d={x : y['value'].reset_index(drop=True) for x,y in df.melt().groupby('variable')}

df=pd.concat(d,1)

df

Out[39]: 

  col1 col2

0    a    a

1    a    b

2    a    c

3    c  NaN

4    d  NaN

5    c  NaN


查看完整回答
反對 回復 2021-12-16
  • 2 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號