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;运营商,但我无法让它发挥作用。
有更好的选择吗?
答案 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的每一行循环更好地扩展