假设我有一个数据框架df
(从硬编码数组中创建用于测试的数组)
+----+----+---+
|name| c1|qty|
+----+----+---+
| a|abc1| 1|
| a|abc2| 0|
| b|abc3| 3|
| b|abc4| 2|
+----+----+---+
我正在将其分组并汇总以获取df1
import pyspark.sql.functions as sf
df1 = df.groupBy('name').agg(sf.min('qty'))
df1.show()
+----+--------+
|name|min(qty)|
+----+--------+
| b| 2|
| a| 0|
+----+--------+
df1
中行的预期顺序是多少?
假设我正在编写单元测试。我需要将df1
与预期数据框架进行比较。我应该将它们比较忽略行的顺序。什么是最好的方法?
数据框中的行排序未固定。有一种简单的方法可以在测试用例中使用预期的数据帧
执行数据框架差异。对于Scala:
assert(df1.except(expectedDf).count == 0)
和
assert(expectedDf.except(df1).count == 0)
对于Python,您需要替换除了减去
来自文档:
减去(其他)在此帧中返回包含行的新数据帧,但不在另一帧中。
这等效于SQL。