【问题标题】:Cartesian product of values in each row in pandas dataframe熊猫数据框中每行值的笛卡尔积
【发布时间】:2019-07-29 23:16:13
【问题描述】:

我有一个数据框/矩阵,它是 MxJ,看起来像这样:

**dataframe: R**

index   0 1 2 3 ... J #columns, go from 0 to J

0       3 0 5 6 ... #values - first row
1       .........
....................
M

还有一个矩阵/数据框,它是 JxJ,它由 0 和 1 组成,看起来像这样:

**dataframe: K / its symetric**

index   0 1 2 3 ... J #columns, go from 0 to J

0       1 0 1 0 ...
1       0 1 1 1 ...
2       0 1 1 1 ...
       .........
....................
J

我需要对每一行进行计算

sum[0 to J](sum[0 to J](K[i,j]*r[i]*r[j])

基本上对于第一行,具体示例是:[(3*3)*1]+[(3*0)*0]+[(3*5)*1]+[(3*6)*0]+[(0*0)*1]+[(0*5)*1]+[(0*6)*1]+[(5*5)*1]+[(5*6)*1]。所以最终的结果应该是1xM。

我知道如何使用 3 个 for 循环,它的伪代码:

sum = []
#J - number of columns
#M - number of rows
for m in range(o,M)
  for i in range(0, J):
    for j in range (i,J):
       sum[m] = sum[m] + (a[i] * a[j]) * wi[i,j]

但 for 循环不是一个选项,因为我的数据量很大。 有人可以用更多的熊猫方式解释我如何用行(那部分我不知道怎么做)来做那个笛卡尔积。

【问题讨论】:

标签: python pandas


【解决方案1】:

您可以将行转换为lists 并使用以下code

    import itertools
def get_cartesian_product(input_lists):
    lst_out = []
    for element in itertools.product(*input_lists):
            lst_out.append(element)
    return lst_out

【讨论】:

    猜你喜欢
    • 2022-12-09
    • 2021-10-31
    • 2019-02-07
    • 2019-04-29
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多