我的PyparkDataframe如下所示:
+--------+----------+----+----+----+
|latitude| longitude|var1|date|var2|
+--------+----------+----+----+----+
| 3.45| -8.65| 1| 7| 2|
| 30.45| 45.65| 1| 7| 2|
| 40.45| 123.65| 1| 7| 2|
| 43.45| 13.65| 1| 7| 2|
| 44.45| -12.65| 1| 7| 2|
| 54.45| -128.65| 1| 7| 2|
+--------+----------+----+----+----+
但我不知道如何重新调整它,以便只为每个日期获取一个寄存器和一个按顺序指定[variable,latitude,longitude]的多列,这样我就可以在一个单独的列中处理variable,latitude和longitude的每个组合。
制作:
df.select(
'date',
*[F.array(F.col(col), F.col('latitude'), F.col('longitude')) for col in var_cols]
).show()
我得到:
+----+---------------------------------+---------------------------------+
|date|array(var1, latitude, longitude) |array(var2, latitude, longitude) |
+----+---------------------------------+---------------------------------+
| 7| [1.0, 3.45, -8.65]| [2.0, 3.45, -8.65]|
| 7| [1.0, 30.45, 45.65]| [2.0, 30.45, 45.65]|
| 7| [1.0, 40.45, 123.65]| [2.0, 40.45, 123.65]|
| 7| [1.0, 43.45, 13.65]| [2.0, 43.45, 13.65]|
| 7| [1.0, 44.45, -12.65]| [2.0, 44.45, -12.65]|
| 7| [1.0, 54.45, -128...| [2.0, 54.45, -128...|
+----+---------------------------------+---------------------------------+
我想要一个带有单个值(var的值)的列,以及一个由纬度和经度的每个值组成的列。想象一下,在pandas中建立一个[日期、纬度、经度]索引,然后拆下纬度和经度列。
例如,在Pandas中,我会这样做:
df.set_index(["date", "latitude", "longitude"]).unstack().unstack()
2条答案
按热度按时间hgncfbus1#
我发现了这个解决方案:
vyswwuz22#
这个怎么样: