首页 > 解决方案 > 来自两个系列、不同长度和索引的笛卡尔积

问题描述

给定两个系列:

import pandas as pd
ser1 = pd.Series(data = [1,2,3], index=[1,2,3])
ser2 = pd.Series(data = [1,2,3,4,5], index = ['a','b','c','d','e'])

我怎样才能将两者交叉相乘以获得所需的输出?

pd.DataFrame(
data = [[1,2,3],[2,4,6],[3,6,9],[4,8,12],[5,10,15]],
index = ser2.index,
columns = ser1.index,)

到目前为止,我的方法是使用与两个系列匹配的索引和 cols 构建一个临时数据框,然后使用 iteritems() 迭代这两个系列之一。我觉得应该有一种更清洁的方法来实现这一点。

标签: pythonarrayspandasnumpydataframe

解决方案


我认为需要numpy.outer两个外部产品Series

df = pd.DataFrame(np.outer(ser2, ser1), index = ser2.index, columns = ser1.index)

print (df)
   1   2   3
a  1   2   3
b  2   4   6
c  3   6   9
d  4   8  12
e  5  10  15

推荐阅读