python - 来自两个系列的笛卡尔积,不同的长度和索引

标签 python arrays pandas numpy dataframe

给定两个系列:

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,)

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

最佳答案

我认为需要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

关于python - 来自两个系列的笛卡尔积,不同的长度和索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51401832/

相关文章:

python - 获取位大小 N 的所有可能的位组合

javascript - 将键/值数组中的对象与另一个对象(键/值)进行比较

C - 如何将一对夫妇的第一个数字按升序排列?

python - 如果在某些时间/值之间, Pandas 累积总和

python - Flask SQLAlchemy 获取所有 json

python - 如何使用 Gensim 加载 Word2vec 而不会出现 AttributeError?

python - BK-Tree如何优化

java - 3 维数组中带有嵌套 for 循环的整数

python - 将用户输入的数据从 Excel 工作表传输到 Python 脚本

python Pandas : Conditional rolling count