python - 如何读取带有 € 和 % 符号的 csv 文件
问题描述
我正在读取一个 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')
但是,这并没有替换 � 符号,我也没有得到所需的数据帧。任何其他方法请建议..
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
解决方案
推荐阅读
- python - 用漂亮的汤抓取多个文件,每个文件作为列名
- c++ - 最终构造函数后自动调用方法
- django - 如何解决错误“RelatedManager”对象不可下标?
- laravel-8 - 显示错误后应保留表单数据
- c++ - 我应该如何解决除数程序 C++ 中的计数问题
- python - 使用本地图像文件进行 Deeplab 测试
- python - 如何用漂亮的汤替换 HTML 元素的值?
- liferay - 从使用 Freemarker - Liferay 7 的主题访问在 portal-ext.properties 中定义的属性
- node.js - firebase 中的 onUpdate 函数在状态之前未检索
- android - 检测 onBackPressed 是否会破坏 Activity?