【问题标题】:How to multiply column values in dataframe using Pyspark (Python)如何使用 Pyspark (Python) 将数据框中的列值相乘
【发布时间】:2021-05-03 01:23:05
【问题描述】:

我有以下数据框,每列都有数值:

    Total.show(5)
    
    
   |id_cliente|consumo_datos_MB|sms_enviados|minutos_llamadas_movil|minutos_llamadas_fijo|sum(id_cliente)|sum(consumo_datos_MB)|sum(sms_enviados)|sum(minutos_llamadas_movil)|sum(minutos_llamadas_fijo)|
        +----------+----------------+------------+----------------------+---------------------+---------------+---------------------+-----------------+---------------------------+--------------------------+
        |         2|             611|           0|                    41|                   38|              2|                  611|                0|                         41|                        38|
        |         8|             284|           5|                    71|                   31|              8|                  284|                5|                         71|                        31|
        |        14|            1324|           0|                    28|                   29|             14|                 1324|                0|                         28|                        29|
        |        21|            1748|           0|                    81|                   12|             21|                 1748|                0|                         81|                        12|
        |        25|            1555|           0|                    60|                    6|             25|                 1555|                0|                         60|                         6|
        +----------+----------------+------------+----------------------+---------------------+---------------+---------------------+-----------------+-----------------

我需要做的是创建另一个 DF,其中每个值乘以一个系数,如下所示:

0.4 --> minutos_llamadas_movil
0.3 --> consumo_datos_MB
0.2 --> minutos_llamadas_fijo
0.1 --> sms_enviados

这意味着我必须将每列中的每个项目乘以不同的值,即:minutos_llamadas_movil 下的每个项目都必须乘以 0.4,consumo_datos_MB 下的每个项目都必须乘以 0.3,依此类推。

这是我尝试过的:

Sumas = Total["consumo_datos_MB", "sms_enviados", "minutos_llamadas_movil", "minutos_llamadas_fijo"]= 
0.3 * Total["consumo_datos_MB"], 
0.4 * Total["minutos_llamadas_movil"], 
0.2 * Total["minutos_llamadas_fijo"],
0.1 * Total["sms_enviados"]

print(Sumas)

我在尝试运行上面的代码时收到以下错误消息:typeerror 'dataframe' object does not support item assignment pyspark

我在网上看到的有关此错误的所有内容都涉及日期格式,但这里不是这种情况,所以我不确定问题可能是什么。

有人可以帮忙吗?

提前非常感谢!

【问题讨论】:

    标签: python dataframe pyspark


    【解决方案1】:

    您可以使用withColumn 将值相乘:

    Sumas = Total.withColumn("consumo_datos_MB", 0.3 * Total["consumo_datos_MB"] ) \
        .withColumn("minutos_llamadas_movil", 0.4 * Total["minutos_llamadas_movil"] )\
        .withColumn("minutos_llamadas_fijo", 0.2 * Total["minutos_llamadas_fijo"] ) \
        .withColumn("sms_enviados", 0.1 * Total["sms_enviados"] )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多