Dies ist, wie meine CSV-Daten wie folgt aussieht:
TagNumber,DatePaid,TotalPaid
ABCD,11/5/2017,$101
EFGH,12/5/2017,$201
ABCD,15/5/2017,$501
ich einen Datenrahmen bin zu schaffen, wird Gruppe die Daten von TagNumber, erhalten Min und Max von DatePaid und Summe TotalPaid . Diese
ist, wie ich bin die Schaffung Datenrahmen
valid_data = valid_data.select('TagNumber', from_unixtime(unix_timestamp('DatePaid', 'MM/dd/yyy')).alias('m_paiddDate'), "TotalPaid")\
.groupBy("TagNumber") \
.agg(F.min("DatePaid").alias("min_date"), F.max("DatePaid").alias("max_date"), F.count("TagNumber").alias("no_of_times_paid")) \
.orderBy("no_of_times_paid", ascending=False)
Wenn ich F.sum("TotalPaid").alias("Total_Paid")
in den Aggregator, ich leere Werte für Total_Paid
Spalte erhalten, wie es aufgrund $
Zeichen als String behandelt wird.
Wie bekomme ich sum
für TotalPaid
Spalte?
Ich bin nicht einverstanden, was, wenn Ihr Geldbeträge Cent enthalten? In jedem Fall funktioniert die grundlegende Methodik, der Datentyp für die Besetzung kann nach Bedarf geändert werden – ags29
Um finanzielle Daten darzustellen, sollten Sie immer Zahlen mit fester Genauigkeit verwenden (d. H. 'DecimalType'), niemals Gleitkommazahlen. – user8371915