Python pyspark更新多个列

Python pyspark更新多个列,python,pandas,pyspark,Python,Pandas,Pyspark,表中所有的数据类型都是字符串。但是,我需要返回一个新的数据帧,在这个数据帧中,我只将名称中带有“smart”的列转换为float。此外,浮点结果不应为指数形式。例如:1.05757484854而不是1.3434E根据需要设置适当的精度 +----------+---------------+--------------------+--------------+-------+-----------+-----------+-----------+-----------+-----------+

表中所有的数据类型都是字符串。但是,我需要返回一个新的数据帧,在这个数据帧中,我只将名称中带有“smart”的列转换为float。此外,浮点结果不应为指数形式。例如:1.05757484854而不是1.3434E

根据需要设置适当的精度

+----------+---------------+--------------------+--------------+-------+-----------+-----------+-----------+-----------+-----------+-----------+------------+------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------+
|      date|  serial_number|               model|capacity_bytes|failure|smart_1_raw|smart_3_raw|smart_4_raw|smart_5_raw|smart_7_raw|smart_9_raw|smart_10_raw|s
+----------+---------------+--------------------+--------------+-------+-----------+-----------+-----------+-----------+-----------+-----------+------------+------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------+
|2018-09-23|       ZJV01VV0|       ST12000NM0007|12000138625024|      0|   32985096|          0|  
|2018-09-23|       ZJV01VV5|       ST12000NM0007|12000138625024|      0|   77197496|          0|  
|2018-09-23| PL2331LAH3XLZJ|HGST HMS5C4040BLE640| 4000787030016|      0|          0|          0| 
|2018-09-23|       ZCH0ATJY|       ST12000NM0007|12000138625024|      0|   51954552|          0|  
|2018-09-23|       ZA1816EB|        ST8000NM0055| 8001563222016|      0|  129696704|          0| 
|2018-09-23|       ZA13ZKX8|         ST8000DM002| 8001563222016|      0|   89446512|          0| 
|2018-09-23| PL2331LAHDB5PJ|HGST HMS5C4040BLE640| 4000787030016|      0|          0|        442| 
|2018-09-23|       ZA1816E1|        ST8000NM0055| 8001563222016|      0|    8437320|          0| 
|2018-09-23| PL2331LAH3WM1J|HGST HMS5C4040BLE640| 4000787030016|      0|          0|          0| 
|2018-09-23|       S30108NT|         ST4000DM000| 4000787030016|      0|   11197576|          0| 
|2018-09-23|       ZJV01VVG|       ST12000NM0007|12000138625024|      0|  172268856|          0|  
|2018-09-23|       ZJV01VVM|       ST12000NM0007|12000138625024|      0|  101040904|          0|  
|2018-09-23|       ZA174KPY|        ST8000NM0055| 8001563222016|      0|   50287344|          0| 
|2018-09-23| PL2331LAH3W4XJ|HGST HMS5C4040BLE640| 4000787030016|      0|          0|        530| 
|2018-09-23|       Z4D068HF|         ST6000DX000| 6001175126016|      0|  232934432|          0| 

您在标记中同时有
pandas
pyspark
,打印内容显然是
spark.df.show()
,但您要求的是
d类型。您能指定您想要在
pandas
pyspark
中获得答案吗?对不起,pyspark。我放了熊猫,以防解决方案对熊猫更有效。但最好是派斯帕克。谢谢
from pyspark.sql.types import DecimalType
list_smart_cols = [i for i in df.columns if i[:len('smart')]=='smart']
for c in list_smart_cols:
    df = df.withColumn(c,col(c).cast(DecimalType(18,2))) # Adjust the number of decimals
                                                         # by changing the 2nd argument.