【发布时间】:2020-10-15 07:18:42
【问题描述】:
【问题讨论】:
标签: python-3.x pandas dataframe concatenation
【问题讨论】:
标签: python-3.x pandas dataframe concatenation
在列表理解中使用itertools.product:
from itertools import product
L = [''.join(x) for x in product(df['Col1'], df['Col2'])]
#alternative
L = [a + b for a, b in product(df['Col1'], df['Col2'])]
df = pd.DataFrame({'Col3':L})
print (df)
Col3
0 AE
1 AF
2 AG
3 BE
4 BF
5 BG
6 CE
7 CF
8 CG
或使用帮助列a 交叉连接解决方案:
df1 = df.assign(a=1)
df1 = df1.merge(df1, on='a')
df = (df1['Col1_x'] + df1['Col2_y']).to_frame('Col3')
【讨论】:
备注:如果您复制用于创建输入的代码而不是图像,则更容易提供帮助,例如:
import pandas as pd
df=pd.DataFrame([['A', 'B', 'C', 'D'],['E', 'F', 'G', 'H']], columns=['col1', 'col2'])
解决方案:最省力的是 itertools 库
from itertools import product
lst1 = ['A', 'B', 'C', 'D']
lst2 = ['E', 'F', 'G', 'H']
reslst = list(product(lst1, lst2))
或作为数据框系列:
reslst = list(product(df['col1'].values, df['col2'].values))
print(reslst)
注意: 如您所知,结果是一个长度为n**2 的列表,因此不能分配给原始数据帧。
【讨论】: