一、笨办法:循环拼接
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 )
五、实际应用
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' ] )