将2列的值连接成1(相当于R' s paste)

时间:2016-09-09 09:16:46

标签: python r pandas

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"。 然后我想添加第三列" C"包含" A"的值和" B"由" _"连接和分隔 根据{{​​3}}的建议,我可以这样做。

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="_")

另一个this answer建议使用&#34;%&#34;运营商,但我无法让它发挥作用。

有更好的选择吗?

1 个答案:

答案 0 :(得分: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的每一行循环更好地扩展