我正在尝试将来自不同Dataframe的列合并到一个Dataframe中进行分析。我正在把我需要的所有栏目都编入词典。
我现在有一本这样的字典-
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'>
}
我想把这本字典转换成pysparkDataframe。
我尝试过这种方法,但结果不是我所期望的-
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-3gb),而且pandas速度太慢。我正在本地机器上运行pyspark。
提前谢谢!:)
1条答案
按热度按时间kdfy810k1#
我建议有两种选择
选项1(联合大小写以生成字典):
您说过,您有>=10个表(您想从中构建字典),这些表有公共列(例如'schoolname'、'type''avgcostacademicyear'、'avgcostprogramyear'、'averagenetpricepublic'是公共列),然后您可以使用union或unionbyname来形成单个合并的表。数据视图。
例如:
会给你你的字典的综合视图
选项2:(如果只有公共联接列)
如果您有一些公共联接列,那么无论存在多少个表,也可以使用标准联接。。
对于psuedo sql示例:
注:任何连接列的缺失都会导致笛卡尔积