如何使用自定义功能将2列A和B串联起来,以使 A列的每个元素与 B列的每个元素串联。避免循环。
A B
a 1
b 2
c 3
d 4
输出:
[a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,d1,d2,d3,d4]
答案 0 :(得分:1)
首次从itertools导入产品
from itertools import product
res = pd.DataFrame((product(df['A'],df['B'])),columns=['A',"B"])
现在是 res
每列重复每个值
A B
0 a 1
1 a 2
2 a 3
3 a 4
4 b 1
5 b 2
6 b 3
7 b 4
8 c 1
9 c 2
10 c 3
11 c 4
12 d 1
现在,您可以执行要应用的任何自定义功能, 由于提到了串联,所以这就是方法
finalList = list(res['A'].astype(str)+res['B'].astype(str))
print(finalList)
结果:
['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4', 'c1', 'c2', 'c3', 'c4', 'd1', 'd2', 'd3', 'd4']
答案 1 :(得分:1)
请查看itertools.product的文档以了解实现。
根据您的需要进行了以下编辑
def product(*args):
pools = [tuple(pool) for pool in args]
result = [[]]
prods = []
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
prods.append(''.join(prod))
return prods
product(df['A'], df['B'].astype(str))
输出:
['a1','a2','a3','a4','b1','b2','b3','b4','c1','c2','c3','c4','d1','d2','d3','d4']
答案 2 :(得分:0)
另一种方法是使用MultiIndex.from_product
创建元组笛卡尔积,并使用map
展平并加入它们
pd.MultiIndex.from_product([df.A, df.B]).map('{0[0]}{0[1]}'.format).tolist()
Out[140]:
['a1',
'a2',
'a3',
'a4',
'b1',
'b2',
'b3',
'b4',
'c1',
'c2',
'c3',
'c4',
'd1',
'd2',
'd3',
'd4']
答案 3 :(得分:-1)
您可以这样做:
a=['a','b','c','d','e']
b=['1','2','3','4','5']
c=[]
for i in range(0,len(a)):
c.append(a[i]+b[i])
print(c)