我试图使用pyspark对数据进行一些操作,但我遇到了一个似乎无法解决的问题。基本上,我有两列,其中包含一个日期字符串
field1 (string): date1 date2 date3 date4 date5
field2 (string): 0.0 1.0 2.0 3.0 4.0
每个值都相互关联(因此date1与field2中的第一个值关联,date2与field2中的第二个值关联,等等)。
我想要实现的是将Dataframe转换成如下行:
field1 field2
date1 0.0
date2 1.0
date3 2.0
date4 3.0
date5 4.0
我试过:
df.split(field1, ' ')
df.explode(field1)
df.split(field2, ' ')
df.explode(field2)
但这将产生一个乘法:
field1 field2
date1 0.0
date1 1.0
date1 2.0
date1 3.0
date1 4.0
date2 0.0
date2 1.0
date2 2.0
date2 3.0
date2 4.0
etc..
所以我想我应该把绳子分开然后做Map
df.split(field1, ' ')
df.split(field2, ' ')
df.create_map(field1,field2).alias(mapped_val)
df.explode(mapped_val)
但是,这不起作用,因为我在 create_map
:
TypeError: Unhasable type: list
我不知道如何才能让它工作,如何将split()输出转换为使用create\u map的输出?
1条答案
按热度按时间stszievb1#
您可以压缩数组并进行分解,再次将其选择回Dataframe。