我有一列Parameters
类型map
的表格:
>>> from pyspark.sql import SQLContext
>>> sqlContext = SQLContext(sc)
>>> d = [{'Parameters': {'foo': '1', 'bar': '2', 'baz': 'aaa'}}]
>>> df = sqlContext.createDataFrame(d)
>>> df.collect()
[Row(Parameters={'foo': '1', 'bar': '2', 'baz': 'aaa'})]
我想在pyspark重塑它,这样所有的按键(foo
,bar
,等)都列,分别为:
[Row(foo='1', bar='2', baz='aaa')]
使用withColumn
作品:
(df
.withColumn('foo', df.Parameters['foo'])
.withColumn('bar', df.Parameters['bar'])
.withColumn('baz', df.Parameters['baz'])
.drop('Parameters')
).collect()
但是 我需要一个解决方案, 因为我有很多 列名称,所以没有明确提及列名称 。
>>> df.printSchema()
root
|-- Parameters: map (nullable = true)
| |-- key: string
| |-- value: string (valueContainsNull = true)
由于的键MapType
不是架构的一部分,因此您必须首先收集这些键,例如:
from pyspark.sql.functions import explode
keys = (df
.select(explode("Parameters"))
.select("key")
.distinct()
.rdd.flatMap(lambda x: x)
.collect())
当您拥有了这些之后,剩下的就是简单的选择:
from pyspark.sql.functions import col
exprs = [col("Parameters").getItem(k).alias(k) for k in keys]
df.select(*exprs)
我是Mapstruct的新手。我试图将列表转换为地图,我在网上搜索了很多,我有一些解决方案,比如它还没有在mapstruct中实现。如果有人能提供一些替代解决方案,我将很高兴。所有我希望转换映射如下: 现在是否可以使用MapStruct来实现?
我有一个 pyspark df,它有很多列,但子集看起来像这样: 我想映射一个函数some_func(),它只使用列“lat”、“lon”和“event_id”来返回一个布尔值,该值将作为名为“验证”的单独列添加到df中。基本上,我需要单独检索函数中感兴趣的列并对它们进行操作。我知道我可以使用UDF或df.withColumn(),但它们用于映射到单列。为此,我需要将感兴趣的列连接为一列,这会使代
我有一张这样的地图<代码>地图 我使用了对象映射器,但它不工作,因为映射在我的结构中包含另一个映射。
我需要将POJO转换成地图。我尝试使用对象映射器,但是像timestamp这样的类型在最终的映射中要么以字符串的形式出现,要么以长的形式出现。有没有什么工具可以做一个简单的转换,使映射具有与POJO中完全相同的对象?(我知道我可以使用反射,但想看看是否有更简单的方法。)
问题内容: 我需要将列表转换为一列熊猫数据框 当前列表(len = 3): 所需的熊猫DF(形状= 3,): 请注意,这些数字代表上述“必需熊猫” DF中的索引。 问题答案: 采用: 谢谢DYZ:
我需要在代码的几个地方将这个映射转换为我的case类,如下所示: 最简单的方法是什么?我能用隐式吗?