我正在尝试将来自不同数据帧的列合并到一个中进行分析。我正在把我需要的所有栏目都编入词典
我现在有一本这样的字典-
newDFDict = {
'schoolName': school.INSTNM,
'type': school.CONTROL,
'avgCostAcademicYear': costs.COSTT4_A,
'avgCostProgramYear': costs.COSTT4_P,
'averageNetPricePublic': costs.NPT4_PUB,
}
{
'schoolName': Column<b'INSTNM'>,
'type': Column<b'CONTROL'>,
'avgCostAcademicYear': Column<b'COSTT4_A'>,
'avgCostProgramYear': Column<b'COSTT4_P'>,
'averageNetPricePublic': Column<b'NPT4_PUB'>
}
我想将此字典转换为Pyspark数据帧
我已经尝试过这种方法,但输出不是我所期望的-
newDFDict = {
'schoolName': school.select("INSTNM").collect(),
'type': school.select("CONTROL").collect(),
'avgCostAcademicYear': costs.select("COSTT4_A").collect(),
'avgCostProgramYear': costs.select("COSTT4_P").collect(),
'averageNetPricePublic': costs.select("NPT4_PUB").collect(),
}
newDF = sc.parallelize([newDFDict]).toDF()
newDF.show()
+---------------------+--------------------+--------------------+--------------------+--------------------+
|averageNetPricePublic| avgCostAcademicYear| avgCostProgramYear| schoolName| type|
+---------------------+--------------------+--------------------+--------------------+--------------------+
| [[NULL], [NULL], ...|[[NULL], [NULL], ...|[[NULL], [NULL], ...|[[Community Colle...|[[1], [1], [1], [...|
+---------------------+--------------------+--------------------+--------------------+--------------------+
有可能吗? 如果可能,怎么做
这样做对吗?如果没有,我如何才能做到这一点
使用pandas不是一个选项,因为数据非常大(2-3 GB),而且pandas速度太慢。我正在本地机器上运行pyspark
提前感谢!:)
我建议有两种选择
选项1(构建字典的联合案例):
你说过,你有>=10个具有公共列(例如“schoolName”、“type”“avgCostAcademicYear”、“avgCostProgramYear”、“avegagenetpricepublic”是公共列)的表(您要从这些表构建字典),然后您可以选择union或unionByName来形成单个合并表。查看数据
例如:
将为您提供词典的综合视图
选项2:(如果只有公共联接列)
如果您有一些常见的联接列,那么无论存在多少个表,也可以使用标准联接
对于psuedo sql示例:
注:遗漏任何连接列都将导致笛卡尔积
相关问题 更多 >
编程相关推荐