2017-08-23 12 views
0

この質問は非常に基本的かもしれませんが、私はpandas DataFrameの3つの列を連結したいと思います。
col1、col2、col3をcol4に連結したいと思います。私はこれをペースト関数で簡単に行うことができることをRで知っています。Pythonデータフレームの行を連結する

df = pd.DataFrame({'col1': [2012, 2013, 2014], 'col2': 'q', 'col3': range(3)}) 

編集:明確にするためのコード - 私は自動的にCOL4を生成したいと思います:

x=pd.DataFrame() 
x['col1'] = [2012,2013,2013] 
x['col2'] = ['q', 'q', 'q'] 
x['col3'] = [1,2,3] 
x['col4'] = ['2012q1', '2013q2', '2014q4'] 

答えて

0
df['col4'] = df.col1.astype(str) + df.col2 + df.col3.astype(str) 
3

使用pd.DataFrame.sumaxis=1で文字列に変換した後。
私は新しい列

df.assign(col4=df[['col1', 'col2', 'col3']].astype(str).sum(1)) 

    col1 col2 col3 col4 
0 2012 q  1 2012q1 
1 2013 q  2 2013q2 
2 2014 q  3 2014q3 

でコピーを作成するためにpd.DataFrame.assignを使用するか、dfが唯一の3つの列を持っている場合は、列のインプレース

df['col4'] = df[['col1', 'col2', 'col3']].astype(str).sum(1) 
df 

    col1 col2 col3 col4 
0 2012 q  1 2012q1 
1 2013 q  2 2013q2 
2 2014 q  3 2014q3 

を追加することができ、あなたがにコードを減らすことができます

df.assign(col4=df.astype(str).sum(1)) 

if dfは、以上の3つの列を持っていますが、連結したい3は、すべての列にわたって連結する

df.assign(col4=df.iloc[:, :3].astype(str).sum(1)) 
+0

合計文字列: – Vaishali

+0

このソリューションは提供されたコードで機能しましたが、実際のデータセットに「次元数が正しくありません」というエラーが表示されました – ktj1989

+0

つまり、データを誤解しています。また、私はあなたのエラーが何を意味するか分かりません。より多くの文脈を提供するために、エラー全体を投稿するべきです。 – piRSquared

0

3まずあり、のように、df.apply(..., axis=1)を書くために、より便利なことがあります

df['col4'] = df.apply(lambda x: "".join(x.astype(str)),axis=1) 
df 

# col1 col2 col3 col4 
#0 2012 q  1 2012q1 
#1 2013 q  2 2013q2 
#2 2014 q  3 2014q3 

特に、たくさんの列があり、それらをすべて書き出したくない場合(Kyleの答えが必要な場合)

関連する問題