小编aro*_*r09的帖子

在PySpark中的GroupedData上应用UDF(具有正常运行的python示例)

我有这个在pandas数据帧中本地运行的python代码:

df_result = pd.DataFrame(df
                          .groupby('A')
                          .apply(lambda x: myFunction(zip(x.B, x.C), x.name))
Run Code Online (Sandbox Code Playgroud)

我想在PySpark中运行它,但在处理pyspark.sql.group.GroupedData对象时遇到问题.

我尝试过以下方法:

sparkDF
 .groupby('A')
 .agg(myFunction(zip('B', 'C'), 'A')) 
Run Code Online (Sandbox Code Playgroud)

返回

KeyError: 'A'
Run Code Online (Sandbox Code Playgroud)

我推测因为'A'不再是一列而我找不到x.name的等价物.

然后

sparkDF
 .groupby('A')
 .map(lambda row: Row(myFunction(zip('B', 'C'), 'A'))) 
 .toDF()
Run Code Online (Sandbox Code Playgroud)

但是得到以下错误:

AttributeError: 'GroupedData' object has no attribute 'map'
Run Code Online (Sandbox Code Playgroud)

任何建议将非常感谢!

python user-defined-functions apache-spark apache-spark-sql pyspark

27
推荐指数
4
解决办法
2万
查看次数

如何使用python pandas groupby或.DataFrameGroupBy对象创建唯一的组合列表

是否有更有效的方法来使用pandas groupby或pandas.core.groupby.DataFrameGroupBy对象来创建唯一的列表,系列或数据框,其中我想要N列中的2列的唯一组合.例如,如果我有列:日期,名称,购买的项目,我只想知道唯一的名称和日期组合,这工作正常:

y = x.groupby(['Date','Name']).count()
y = y.reset_index()[['Date', 'Name']]
Run Code Online (Sandbox Code Playgroud)

但我觉得应该有更清洁的方式使用

y = x.groupby(['Date','Name'])
Run Code Online (Sandbox Code Playgroud)

但y.index给了我一个错误,虽然y.keys工作.这实际上让我问一般问题是什么是pandas.core.groupby.DataFrameGroupBy对象方便?

谢谢!

python python-2.7 pandas

4
推荐指数
1
解决办法
2041
查看次数

如何使用pandas.date_range()获取指定开始日期和结束日期之间具有n个指定周期(相等)的时间系列

我想在开始日期和结束日期(包括那些边界)之间获得一个列表或一系列n个日期,但是

dateIndex=pd.date_range(start=dt.datetime.today().date(), end=pd.to_datetime(expiry).date(), periods=n)
Run Code Online (Sandbox Code Playgroud)

ValueError的结果:必须指定start,end或periods中的两个.我不能使用freq = Freq参数,因为我的日期范围不一致 - 它可能是从一个月到两年的任何时间跨度,因此我想要一个n点的等间隔时间序列.

谢谢!

python datetime time-series pandas

3
推荐指数
1
解决办法
5910
查看次数