我需要将列的每个元素乘以同一数据帧的不同列中的每个元素.我的原始数据集看起来像这样:
origin sum sum2
a. 2 1
b. 4 2
c. 6 3
我期待的结果类似于:
origin dest result (sum * sum2)
a. a. 2
a. b. 4
a. c. 6
b. a. 4
b. b. 8
b. c. 12
c. a. 6
c. b. 12
c. c. 18
我正在编写的脚本如下,但我无法得到需要的结果:
x = 0
numerator = []
for index1, row1 in df.iterrows():
constant = row1
numerator.append([])
for index2, row2 in df.iterrows():
result = row2*constant
numerator[x].append(result)
x = x + 1
解决方法:
您可以使用:
> numpy.outer
为多个
> numpy.ravel
用于展平
> MultiIndex.from_product
来自列原点的新索引
> DataFrame
构造函数
> reset_index
来自MultiIndex的列:
mux = pd.MultiIndex.from_product([df.origin, df.origin], names=['origin','dest'])
data = np.outer(df['sum'], df['sum2']).ravel()
df = pd.DataFrame(data, index=mux, columns=['result']).reset_index()
print (df)
origin dest result
0 a. a. 2
1 a. b. 4
2 a. c. 6
3 b. a. 4
4 b. b. 8
5 b. c. 12
6 c. a. 6
7 c. b. 12
8 c. c. 18
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。