编写一个函数,该函数需要使用创建pyspark.sql.GroupedData时指定的列。这些列似乎存储在类的._jgd属性中,该属性是一个Java对象。我有一个hack /解决方法(如下),但想知道是否有一种直接访问java对象内容的方法。有没有“好的/最好的”方法,建议什么?
import pandas as pd
# Sample data
df = pd.DataFrame({'gcol1': ['a1','a1','a1','b2','b2','cc'],
'x1': [1,2,3,4,5,6],
'x2': [1,2,3,4,5,6]})
df = spark.createDataFrame(df)
df = df.groupby('gcol1')
需要带有['gcol1']的列表。
我的“黑客”作品是这样的:
grouping_cols = df.count().columns
grouping_cols.reverse()
grouping_cols.remove('count')
grouping_cols.reverse()
print(grouping_cols)
['gcol1']
这种hacky解决方案通常会很好,但是最好从对象访问信息。 ._jgd属性似乎具有必需的信息,但这是一个JavaObject。
print(df._jgd)
RelationalGroupedDataset: [grouping expressions: [gcol1], value: [gcol1: string, x1: bigint ... 1 more field], type: GroupBy]