2016-10-04 10 views
0

私は2列のデータフレームを持っていますが、column1(String)とcolumn2(int)の値を連結するロジックを持つ新しい列column3を作成しようとしています。セパレータ( '_')。整数を使用して文字列を連結しようとしましたが、望ましくない値が追加されています

0  Andy_0  2\n1  2\n2  1\n3  ... 
1  Ashok_0  2\n1  2\n2  1\n3 ... 
2  Collins_0  2\n1  2\n2  1\n3 ... 

しかし、(2\n1 2\n2 1\n3 ...):結果以下

df['column3'] = df['column1'].apply(lambda x: x + '_' + str(df['column2'])) 

df['column3'] = df['column1'] + '_' + str(df['column2']) 

df['column3'] = pd.Series(df['column1']).str.cat(str(df['column2']), sep='_') 

されています。以下は

column1 column2 
    0 Andy  1 
    1 Ashok 4 
    2 Collins 7 

は私のいくつかの試みです:以下

は、データフレームの数の初期値であり、結果column3の値に追加され、1つの値ゼロ(0)だけが追加されていますo結果列3。

状況が間違っていることを教えてください。

答えて

1

あなたはそれを複雑にする必要はありません。データフレームのサポートなど操作:

df.column1 + "_" + df.column2.astype("str") 
+0

ありがとう、あなたのソリューションは働いた! – Soumyaansh

0

あなたがこの希望:

def concat_cols(row): 
    return "{}_{}".format(row['column1'], row['column2']) 

df['column3'] = df.apply(concat_cols, axis = 1) 

を重要な側面は、データフレームの行単位ではなく、列単位で見えた、axis = 1です。上のコードでは、ラムダ関数のdf['column2']は、行の値ではなく、列全体を参照していました。

関連する問題