替換值的字符串在數據幀我有一些屬性的數據幀,它有下一·外觀:在Pyspark
+-------+-------+
| Atr1 | Atr2 |
+-------+-------+
| 3,06 | 4,08 |
| 3,03 | 4,08 |
| 3,06 | 4,08 |
| 3,06 | 4,08 |
| 3,06 | 4,08 |
| ... | ... |
+-------+-------+
正如你所看到的,數據幀的ATR1和ATR2的值是數字具有','字符。這是因爲我已經從CSV中加載了那些DoubleType數字的小數由','表示的數據。
當我將數據加載到數據幀中的值轉換爲字符串,所以我申請鑄件從字符串到DoubleType這些屬性是這樣的:
df = df.withColumn("Atr1", df["Atr1"].cast(DoubleType()))
df = df.withColumn("Atr2", df["Atr2"].cast(DoubleType()))
但是,當我這樣做,值轉換爲空
+-------+-------+
| Atr1 | Atr2 |
+-------+-------+
| null | null |
| null | null |
| null | null |
| null | null |
| null | null |
| ... | ... |
+-------+-------+
我想這是因爲DoubleType小數必須用'。'分隔。而不是','。但是我沒有機會編輯CSV文件,所以我想用'。'替換數據框中的','符號。然後將該投射應用於DoubleType。
我該怎麼辦?
太棒了!感謝您的明確答案! – jartymcfly
事情和我在想什麼一樣。你可以通過做'lambda x:float(x.replace(',','。')),DoubleType())''來跳過整個'.cast'部分嗎? – Adam
好的建議!更緊湊 – Luis