Numpy 添加外部,字符串更改?

Numpy add outer, string change?

我有一个数据框 df1=

 HPE FRE UNE
0  S0  S0  S0
1  S1  S1  S1

使用下面的代码("reduce" 是一个 functool 函数,sta 是一个包含 df1 列的列表):

reduce(lambda x,y:np.add.outer(x,y),sta).reshape(-1)

我将我的数据帧缩减为 numpy 数组,如下所示:

['S0S0S0' 'S0S0S1' 'S0S1S0' 'S0S1S1' 'S1S0S0' 'S1S0S1' 'S1S1S0' 'S1S1S1']

但我希望我的输出如下所示:

['S0|S0|S0' 'S0|S0|S1' 'S0|S1|S0' 'S0|S1|S1' 'S1|S0|S0' 'S1|S0|S1' 'S1|S1|S0' 'S1|S1|S1']

我该怎么办?

我会这样做:

pd.Series(map('|'.join, itertools.product(*sta)))

假设一个不那么退化的输入df1使例子更清楚:

  HPE FRE UNE
0  AB  CD  EF
1  GH  IJ  KL

sta = [df1.HPE, df1.FRE, df1.UNE],结果是:

0    AB|CD|EF
1    AB|CD|KL
2    AB|IJ|EF
3    AB|IJ|KL
4    GH|CD|EF
5    GH|CD|KL
6    GH|IJ|EF
7    GH|IJ|KL