pyspark.sql.GroupedData.applyInPandas¶
-
GroupedData。
applyInPandas
( 函数:PandasGroupedMapFunction,模式:联盟(pyspark.sql.types.StructType,str] )→pyspark.sql.dataframe.DataFrame¶ -
地图每组的电流
DataFrame
使用一个熊猫udf和返回结果DataFrame。函数应该pandas.DataFrame并返回另一个pandas.DataFrame。为每个组,所有列在一起作为一个传递pandas.DataFrame用户函数和返回pandas.DataFrame结合在一起作为一个
DataFrame
。的模式应该是一个
StructType
返回的描述模式pandas.DataFrame。返回的列标签pandas.DataFrame必须匹配的字段名称定义模式如果指定为字符串,或匹配位置如果不是字符串字段数据类型,例如整数指数。返回的长度pandas.DataFrame可以任意的。- 参数
-
- 函数 函数
-
一个Python本机函数,需要pandas.DataFrame,输出一个pandas.DataFrame。
-
模式
pyspark.sql.types.DataType
或str -
的返回类型函数在PySpark。值可以是
pyspark.sql.types.DataType
对象或DDL-formatted类型字符串。
笔记
这个函数需要一个完整的洗牌。一组的所有数据将被加载到内存中,因此用户应该意识到潜在的伯父风险如果数据倾斜和某些群体是装入内存太大。
这个API是实验性的。
例子
> > >进口熊猫作为pd> > >从pyspark.sql.functions进口pandas_udf,装天花板> > >df=火花。createDataFrame(…((1,1.0),(1,2.0),(2,3.0),(2,5.0),(2,10.0)),…(“id”,“v”))> > >def正常化(pdf):…v=pdf。v…返回pdf。分配(v=(v- - - - - -v。的意思是())/v。性病())> > >df。groupby(“id”)。applyInPandas(…正常化,模式=“id, v双”)。显示()+ - - - + - - - - - - - - - - - - - - - - - - - +v | | | id+ - - - + - - - - - - - - - - - - - - - - - - - +| 1 | -0.7071067811865475 || 1 | 0.7071067811865475 || 2 | -0.8320502943378437 || 2 | -0.2773500981126146 || 2 | 1.1094003924504583 |+ - - - + - - - - - - - - - - - - - - - - - - - +
另外,用户可以通过一个函数有两个参数。在这种情况下,分组密钥(s)将作为第一个参数传递,数据将作为第二个参数传递。分组密钥(s)将被传递的tuple numpy数据类型,例如,numpy.int32和numpy.float64。数据仍将通过传递pandas.DataFrame从最初的火花DataFrame包含所有列。这是非常有用的,当用户不想硬编码分组关键(s)的功能。
> > >df=火花。createDataFrame(…((1,1.0),(1,2.0),(2,3.0),(2,5.0),(2,10.0)),…(“id”,“v”))> > >defmean_func(关键,pdf):…#键是一个numpy.int64的元组,也就是价值…#“id”为当前组…返回pd。DataFrame([关键+(pdf。v。的意思是())))> > >df。groupby(“id”)。applyInPandas(…mean_func,模式=“id, v双”)。显示()+ - - - + - - - +v | | | id+ - - - + - - - +| 1 | 1.5 || 2 | 6.0 |+ - - - + - - - +
> > >defsum_func(关键,pdf):…#两个numpy.int64s的关键是一个元组,这是价值观…#的“id”和“装天花板(df。v/2)' for the current group…返回pd。DataFrame([关键+(pdf。v。总和())))> > >df。groupby(df。id,装天花板(df。v/2))。applyInPandas(…sum_func,模式=“id”,装天花板(v / 2)的长,v双”)。显示()+ - - - + - - - - - - - - - - - - - - - - - + +| | id装天花板v (v / 2) | |+ - - - + - - - - - - - - - - - - - - - - - + +| 2 | 5 | 10.0 || 1 | 1 | 3.0 || 2 | 3 | 5.0 || 2 | 2 | 3.0 |+ - - - + - - - - - - - - - - - - - - - - - + +