如何将 pandas' DataFrame 转换为 Spark 中的 DataFrame 或 LabeledPoint?
How to convert pandas' DataFrame to DataFrame or LabeledPoint in Spark?
我知道在使用 spark 数据框时,您会希望将任何数据源直接导入为 spark 数据框。在我的例子中,我需要使用 pandas 函数来消除 table 并创建虚拟变量。所以我在读取数据后在我的 .map() 函数中使用了这个函数。
def parsePoint(line):
listmp = list(line.split('\t'))
dataframe = pd.DataFrame(pd.get_dummies(listmp[1:]).sum()).transpose()
dataframe.insert(0, 'status', dataframe['accepted'])
if 'NULL' in dataframe.columns:
dataframe = dataframe.drop('NULL', axis=1)
if '' in dataframe.columns:
dataframe = dataframe.drop('', axis=1)
if 'rejected' in dataframe.columns:
dataframe = dataframe.drop('rejected', axis=1)
if 'accepted' in dataframe.columns:
dataframe = dataframe.drop('accepted', axis=1)
return dataframe
我的 .reduce() 函数是这样的:
parsedData = data.map(parsePoint).reduce(lambda a, b: a.append(b)).fillna(0)
它正是我想要的,但现在我需要将这个重新组合的 pandas 数据帧放入 labeledPoints 中,以便我可以将它与 MLlib 算法一起使用。我如何做与 .toPandas() 函数相反的操作,并将 pandas 转换为 spark dataframe 或 labeledPoint?
sqlContext.createDataFrame(PANDASDATA)
我知道在使用 spark 数据框时,您会希望将任何数据源直接导入为 spark 数据框。在我的例子中,我需要使用 pandas 函数来消除 table 并创建虚拟变量。所以我在读取数据后在我的 .map() 函数中使用了这个函数。
def parsePoint(line):
listmp = list(line.split('\t'))
dataframe = pd.DataFrame(pd.get_dummies(listmp[1:]).sum()).transpose()
dataframe.insert(0, 'status', dataframe['accepted'])
if 'NULL' in dataframe.columns:
dataframe = dataframe.drop('NULL', axis=1)
if '' in dataframe.columns:
dataframe = dataframe.drop('', axis=1)
if 'rejected' in dataframe.columns:
dataframe = dataframe.drop('rejected', axis=1)
if 'accepted' in dataframe.columns:
dataframe = dataframe.drop('accepted', axis=1)
return dataframe
我的 .reduce() 函数是这样的:
parsedData = data.map(parsePoint).reduce(lambda a, b: a.append(b)).fillna(0)
它正是我想要的,但现在我需要将这个重新组合的 pandas 数据帧放入 labeledPoints 中,以便我可以将它与 MLlib 算法一起使用。我如何做与 .toPandas() 函数相反的操作,并将 pandas 转换为 spark dataframe 或 labeledPoint?
sqlContext.createDataFrame(PANDASDATA)