python - 来自两个系列、不同长度和索引的笛卡尔积
问题描述
给定两个系列:
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() 迭代这两个系列之一。我觉得应该有一种更清洁的方法来实现这一点。
解决方案
我认为需要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
推荐阅读
- arrays - Swift:我的哈希表适用于幻数,但不适用于动态数字
- javascript - 我知道如何将 if 语句写成公式,但不是在脚本中
- django - Django电子商务项目作为初学者rabbitmq在windows 10上安装问题
- python - findall 函数的 Python 正则表达式问题
- python - 使用来自 Rekognition AI 服务的标签标记 S3 存储桶中的图像 - boto3
- python - 平滑要在 ARIMA 中使用的时间序列数据
- python - 将具有 C 依赖关系的 Python 库部署到 Heroku
- javascript - 如何将红色字体应用于动态数据的特定列?
- docker - Docker:如何与其他两个图像共享文件?
- c++ - 关于函数模板实例化的 sfinae