ac2*_*c24 2 python arrays numpy dataframe pandas
给定两个系列:
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'])
Run Code Online (Sandbox Code Playgroud)
如何将两者相乘以获得所需的输出?
pd.DataFrame(
data = [[1,2,3],[2,4,6],[3,6,9],[4,8,12],[5,10,15]],
index = ser2.index,
columns = ser1.index,)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的方法是用索引和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
Run Code Online (Sandbox Code Playgroud)
您可以使用 NumPy 广播将一个系列的值乘以另一个系列的转置值。
res = pd.DataFrame(ser1.values * ser2.values[:, None],
index=ser2.index, columns=ser1.index)
print(res)
1 2 3
a 1 2 3
b 2 4 6
c 3 6 9
d 4 8 12
e 5 10 15
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
506 次 |
| 最近记录: |