如何根据 Pyspark 中的单元格值重命名列?
How can I rename a column based on a cell value in Pyspark?
目前我的情况是:
signal_name timestamp signal_value
0 alert 1632733513 on
1 alert 1632733515 off
2 alert 1632733518 on
我想用 signal_name
重命名列 signal_value
。 df 在信号名称 alert
之后被过滤,因此 signal_name
.
没有其他值
signal_name timestamp alert
0 alert 1632733513 on
1 alert 1632733515 off
2 alert 1632733518 on
由于信号名称已寻址,因此不再需要第一列。所以我想放弃它。
timestamp alert
0 1632733513 on
1 1632733515 off
2 1632733518 on
由于有多个df(基于其他signal_name
)出现这个问题,所以这个方法应该是通用的。
如果您控制在 signal_name
上过滤数据框的部分,那么您可以使用过滤器中使用的相同值重命名该列。
否则,您可以 select 将 signal_name
列的第一个值放入 python 变量中,然后使用它来重命名该列 signal_value
:
data = [("alert", "1632733513", "on"), ("alert", "1632733515", "off"), ("alert", "1632733518", "on")]
df = spark.createDataFrame(data, ["signal_name", "timestamp", "signal_value"])
signal_name = df.select("signal_name").first().signal_name
df1 = df.withColumnRenamed("signal_value", signal_name).drop("signal_name")
df1.show()
# +----------+-----+
# | timestamp|alert|
# +----------+-----+
# |1632733513| on|
# |1632733515| off|
# |1632733518| on|
# +----------+-----+
目前我的情况是:
signal_name timestamp signal_value
0 alert 1632733513 on
1 alert 1632733515 off
2 alert 1632733518 on
我想用 signal_name
重命名列 signal_value
。 df 在信号名称 alert
之后被过滤,因此 signal_name
.
signal_name timestamp alert
0 alert 1632733513 on
1 alert 1632733515 off
2 alert 1632733518 on
由于信号名称已寻址,因此不再需要第一列。所以我想放弃它。
timestamp alert
0 1632733513 on
1 1632733515 off
2 1632733518 on
由于有多个df(基于其他signal_name
)出现这个问题,所以这个方法应该是通用的。
如果您控制在 signal_name
上过滤数据框的部分,那么您可以使用过滤器中使用的相同值重命名该列。
否则,您可以 select 将 signal_name
列的第一个值放入 python 变量中,然后使用它来重命名该列 signal_value
:
data = [("alert", "1632733513", "on"), ("alert", "1632733515", "off"), ("alert", "1632733518", "on")]
df = spark.createDataFrame(data, ["signal_name", "timestamp", "signal_value"])
signal_name = df.select("signal_name").first().signal_name
df1 = df.withColumnRenamed("signal_value", signal_name).drop("signal_name")
df1.show()
# +----------+-----+
# | timestamp|alert|
# +----------+-----+
# |1632733513| on|
# |1632733515| off|
# |1632733518| on|
# +----------+-----+