我在下面有一个Pandas数据框,
data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(data)
这里df是一个Pandas Dataframe 。
我正在尝试将此 Dataframe 转换为Spark上的PandasAPI
import pyspark.pandas as ps
pdf = ps.from_pandas(df)
print(type(pdf))
现在 Dataframe 类型是'〈class ' pyspark.panda.frame.DataFrame'〉'不,我在pdf上应用了group by函数,如下所示,
for i,j in pdf.groupby("Team"):
print(i)
print(j)
我在下面看到一个错误,如
KeyError: (0,)
不确定此功能是否适用于Spark上的PandasAPI?
2条答案
按热度按时间hjzp0vay1#
pyspark pandas并没有实现所有的功能,因为Spark是分布式架构,因此像行迭代等操作可能是主观的。
如果要打印团体,那么pysparkPandas代码:
相当于Pandas代码:
对源代码的引用
如果你浏览源代码,你会发现没有pyspark pandas的
__iter__()
实现:https://spark.apache.org/docs/latest/api/python/_modules/pyspark/pandas/groupby.html但迭代器会为Pandas生成(group_name,sub_group):https://github.com/pandas-dev/pandas/blob/v1.5.1/pandas/core/groupby/groupby.py#L816
迭代组的文档参考
pysparkPandas:https://spark.apache.org/docs/latest/api/python/reference/pyspark.pandas/groupby.html?highlight=groupby#indexing-iteration
Pandas:https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html#iterating-through-groups
z9gpfhce2#
如果你想看到给定的组,只需正确定义你的pyspark df,并使用print语句和生成器的给定结果。
或者