<p>您可以筛选出6月份之前的所有月份,并为每个客户获得最大价值:</p>
<pre><code>(
df.filter(F.col('Month') >= 6)
.groupby('Client')
.agg(F.when(F.max('Value') > 90, 3)
.when(F.max('Value') > 15, 2)
.otherwise(1)
.alias('Target'))
.join(df, 'Client')
.select(*df.columns, 'Target')
).show()
</code></pre>
<p>输出:</p>
<pre><code>+ + -+ + -+ +
|Year|Month|Client|Value|Target|
+ + -+ + -+ +
|2019| 1| 1| 5| 3|
|2019| 2| 1| 3| 3|
|2019| 3| 1| 4| 3|
|2019| 4| 1| 0| 3|
|2019| 5| 1| 3| 3|
|2019| 6| 1| 15| 3|
|2019| 7| 1| 45| 3|
|2019| 8| 1| 50| 3|
|2019| 9| 1| 64| 3|
|2019| 10| 1| 91| 3|
|2019| 11| 1| 1| 3|
|2019| 12| 1| 34| 3|
|2019| 1| 2| 0| 2|
|2019| 2| 2| 0| 2|
|2019| 3| 2| 0| 2|
|2019| 4| 2| 0| 2|
|2019| 5| 2| 1| 2|
|2019| 6| 2| 2| 2|
|2019| 7| 2| 10| 2|
|2019| 8| 2| 1| 2|
+ + -+ + -+ +
only showing top 20 rows
</code></pre>