微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 将列的每个元素乘以同一数据帧中不同列的每个元素

我需要将列的每个元素乘以同一数据帧的不同列中的每个元素.我的原始数据集看起来像这样:

   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] 举报,一经查实,本站将立刻删除。

相关推荐