How to merge/combine columns in pandas?

后端 未结 4 2000
日久生厌
日久生厌 2020-12-09 18:35

I have a (example-) dataframe with 4 columns:

data = {\'A\': [\'a\', \'b\', \'c\', \'d\', \'e\', \'f\'],
    \'B\': [42, 52, np.nan, np.nan, np.nan, np.nan],         


        
4条回答
  •  攒了一身酷
    2020-12-09 19:06

    Option 1
    Using assign and drop

    In [644]: cols = ['B', 'C', 'D']
    
    In [645]: df.assign(E=df[cols].sum(1)).drop(cols, 1)
    Out[645]:
       A     E
    0  a  42.0
    1  b  52.0
    2  c  31.0
    3  d   2.0
    4  e  62.0
    5  f  70.0
    

    Option 2
    Using assignment and drop

    In [648]: df['E'] = df[cols].sum(1)
    
    In [649]: df = df.drop(cols, 1)
    
    In [650]: df
    Out[650]:
       A     E
    0  a  42.0
    1  b  52.0
    2  c  31.0
    3  d   2.0
    4  e  62.0
    5  f  70.0
    

    Option 3 Lately, I like the 3rd option.
    Using groupby

    In [660]: df.groupby(np.where(df.columns == 'A', 'A', 'E'), axis=1).first() #or sum max min
    Out[660]:
       A     E
    0  a  42.0
    1  b  52.0
    2  c  31.0
    3  d   2.0
    4  e  62.0
    5  f  70.0
    
    In [661]: df.columns == 'A'
    Out[661]: array([ True, False, False, False], dtype=bool)
    
    In [662]: np.where(df.columns == 'A', 'A', 'E')
    Out[662]:
    array(['A', 'E', 'E', 'E'],
          dtype='|S1')
    

提交回复
热议问题