如何读取带有€和%symbol的csv文件

2024-05-29 10:41:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读取csv文件并创建pyspark数据帧。TrueValue和PickoutValue列包含“€”和“%”符号。阅读后,我得到的欧元符号为“� ".

Month       TrueValue           PickoutValue
1/1/2021    4728                52500
1/1/2021    4313                0
2/1/2021    3101                2500
2/1/2021    0                   0
3/1/2021    6.90%               6.60%
2/1/2021    75.60%              70.00%
3/1/2021    � 373,020,387.05    � 223,885,862.89

我需要通过除以((TrueValue/PickoutValue)*100)来创建一个新列“ResultValue” 这就是我试过的

df_src=spark.read.csv(src_path, header=True, encoding='ISO-8859-1')
df=df.select('Month', \
        'TrueValue',F.translate(F.col('TrueValue'),"%\u20ac� ","").alias('TrueValueReplaced') \
        'PickoutValue',F.translate(F.col('PickoutValue'),"%\u20ac� ","").alias('PickoutValueReplaced')) \
        .withColumn('ResultValue', (col('TrueValueReplaced')/col('PickoutValueReplaced')*100)) \
                  .drop('TrueValueReplaced').drop('PickoutValueReplaced')

但是,这并不能取代� 符号和im未获得所需的数据帧。 任何其他方法请提供建议

Month       TrueValue           PickoutValue        TrueValueReplaced       PickoutValueReplaced        ResultValue
1/1/2021    4728                52500               4728                    52500                       9.005714285714287
1/1/2021    4313                0                   4313                    0                           null    
2/1/2021    3101                2500                3101                    2500                        124.03999999999999
2/1/2021    0                   0                   0                       0                           null
3/1/2021    6.90%               6.60%               6.90                    6.60                        104.54545454545456
2/1/2021    75.60%              70.00%              75.60                   70.00                       107.99999999999999
3/1/2021     373,020,387.05  223,885,862.89  373,020,387.05      223,885,862.89         null

Tags: csv数据srcdf符号colnulltranslate

热门问题