1.目标
输入a和b,返回c(对应组合的结果)
a=['a', 'b', 'c']
b=['1', '2', '3']
c=['a_1','b_2','c_3']
2.解决
python对于许多这种看上去很简单的事情,其实反而没有直接的基础函数,不像R自带的paste()/paste0()
就可以搞定,当然这主要是由于他们对于数组/向量的运算机制不同。
1.for循环
lable=[]
for i in range(len(m)):
id=m[i]+'_'+n[i]
lable.append(id)
不过也可以简化这个代码, 通过zip()
可以实现
lable=['_'.join(x) for x in list(zip(m,n))] # 一句代码实现上面的循环 zip是对应组合数组用的 join是数组和元组组合用的
2.pandas/numpy里面的实现
如果本身这两列是dataframe里面的,那么在 Pandas 里 DataFrame 中实现合并两列文本的方式就多了,也更简单
常见的两个字符串组合的方式全部可以用:
+
运算符方法;df.map()
方法;df.apply()
方法;Series.str.cat()
方法];df.agg()
方法等。
举一个简单的例子:
arr=[['a', 'b', 'c'],['1', '2', '3']]
pd=pandas.DataFrame(data,columns=['a','b'])
pd['c']=pd['a']+'_'+pd['c']
其他pd中的方法可以参见:
https://www.delftstack.com/zh/howto/python-pandas/how-to-combine-two-columns-of-text-in-dataframe-in-pandas/
今天又是学习python的一天呀~~
网友评论