2016-09-09 3 views
1

例データ:を連結値(Rのペーストの等価)のpython 3.5

import pandas as pd 
df=pd.DataFrame({"A":["x","y","z","t","f"], 
       "B":[1,2,1,2,4]}) 

これは私の2つの列 "A" と "B" のデータフレームを与えます。 次に、 "A"と "B"の値が連結され、 "_"で区切られた3番目の列 "C"を追加します。
this answerからの提案に続いて、このようにすることができます。

for i in range(0,len(df["A"])): 
    df.loc[i,"C"]=df.loc[i,"A"]+"_"+str(df.loc[i,"B"]) 

私が望む結果が得られますが、そのような単純な作業のために畳み込まれているようです。 Rで

これは次のように行われることになります。

df<-data.frame(A=c("x","y","z","t","f"), 
       B=c(1,2,1,2,4)) 
df$C<-paste(df$A,df$B,sep="_") 

threadは「%」演算子を使用することを示唆したが、私はそれを動作させることはできません。

もっと良い選択肢はありますか?

答えて

2

あなたはただ一緒に列を追加することができますが、「B」のために、あなたはastype(str)を使用してタイプをキャストする必要があります。

In [115]: 
df['C'] = df['A'] + '_' + df['B'].astype(str) 
df 

Out[115]: 
    A B C 
0 x 1 x_1 
1 y 2 y_2 
2 z 1 z_1 
3 t 2 t_2 
4 f 4 f_4 

これはベクトル化アプローチであり、大きなDFSのためのすべての行を超えるループよりもはるかに優れてスケールします

+0

私の試みには 'df [" C "] = df [" A] + "_" + str(df ["B"]) 'が含まれていませんでした。 – Haboryme

+2

'str(df ['B'])'は、系列の文字列 'repr'を作成するだけで、型を変更しません – EdChum