【问题标题】:Multiply all columns in a Pandas dataframe together将 Pandas 数据框中的所有列相乘
【发布时间】:2023-03-05 18:03:01
【问题描述】:

是否可以将Pandas.DataFrame 中的所有列相乘以获得 DataFrame 中每一行的单个值?

例如,使用

df = pd.DataFrame(np.random.randn(5,3)*10)

我想要一个新的DataFramedf2,其中df2.ix[x,0] 的值为df.ix[x,0] * df.ix[x,1] * df.ix[x,2]

但是我不想硬编码,我怎样才能使用循环来实现呢?

我找到了一个函数 df.mul(series, axis=1),但不知道如何将它用于我的目的。

【问题讨论】:

    标签: python python-2.7 numpy scipy pandas


    【解决方案1】:

    你可以使用DataFrame.prod():

    >>> df = pd.DataFrame(np.random.randint(1, 10, (5, 3)))
    >>> df
       0  1  2
    0  7  7  5
    1  1  8  6
    2  4  8  4
    3  2  9  5
    4  3  8  7
    >>> df.prod(axis=1)
    0    245
    1     48
    2    128
    3     90
    4    168
    dtype: int64
    

    您也可以apply np.prod,这是我最初所做的,但通常在可用时直接方法更快。

    >>> df = pd.DataFrame(np.random.randint(1, 10, (5, 3)))
    >>> df
       0  1  2
    0  9  3  3
    1  8  5  4
    2  3  6  7
    3  9  8  5
    4  7  1  2
    >>> df.apply(np.prod, axis=1)
    0     81
    1    160
    2    126
    3    360
    4     14
    dtype: int64
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 2017-08-27
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      相关资源
      最近更新 更多