zoukankan      html  css  js  c++  java
  • Python学习笔记:拼接数据框中所有列

    一、笨办法:循环拼接

    import pandas as pd
    import numpy as np
    df = pd.DataFrame({'user_id':['A','B','C','D','E'],
                       'v0':['high','tall','high','one','two'],
                       'v1':np.random.rand(5),
                       'v2':np.random.rand(5),
                       'v3':np.random.rand(5),
                       'v4':np.random.rand(5),
                       'v5':np.random.rand(5)})
    
    # 列数                                                             
    num_columns = df.columns.shape[0]
    # 列值
    col_names = df.columns.values.tolist()
    # 添加一列
    df.loc[:, 'merged'] = ''
    # 循环合并
    for i in range(num_columns):
        print('Concat:', col_names[i])
        df.loc[:, 'merged'] = df.loc[:, 'merged'] + ' - ' + df[col_names[i]].astype(str)
    

    二、次方法:str.join合并

    # 数据字段需要先转换为字符类型
    # 合并部分字段
    df['concat'] = pd.Series(df[['user_id','v0','v1']].astype(str).fillna('').values.tolist()).str.join('')
    
    # 合并全部字段
    df['concat2'] = pd.Series(df.astype(str).fillna('').values.tolist()).str.join('')
    

    三、再方法:apply循环

    df['new'] = df.astype(str).apply('//'.join, axis=1)
    

    四、快方法:sum求和

    df['new'] = df.astype(str).values.sum(axis=1)
    

    五、实际应用

    # 合并v1-v10
    result['final'] = pd.Series(result[['v'+str(x+1) for x in range(10)]].fillna('').values.tolist()).str.join('//')
    
    # 筛选字段
    result = result.filter(items=['id', 'final'])
    

    参考链接:连接pandas数据框中的所有列

  • 相关阅读:
    每日日报8月12日
    每日日报8月15日
    每日日报8月18日
    每日日报8月9日
    九月29号——动手又动脑
    今日总结
    每周总结
    今日总结
    周总结
    今日总结
  • 原文地址:https://www.cnblogs.com/hider/p/15509410.html
Copyright © 2011-2022 走看看