Spark使用以前的某些列的值添加新列

时间:2017-10-02 10:31:57

标签: python apache-spark spark-dataframe

我有这样的DataFrame:

+----------+---+
|   code   |idn|
+----------+---+
|   [I0478]|  0|
|   [B0527]|  1|
|   [C0798]|  2|
|   [C0059]|  3|
|   [I0767]|  4|
|   [I1001]|  5|
|   [C0446]|  6|
+----------+---+

我想向DataFrame添加新列

+----------+---+------+
|   code   |idn| item |
+----------+---+------+
|   [I0478]|  0| I0478|
|   [B0527]|  1| B0527|
|   [C0798]|  2| C0798|
|   [C0059]|  3| C0059|
|   [I0767]|  4| I0767|
|   [I1001]|  5| I1001|
|   [C0446]|  6| C0446|
+----------+---+------+

请帮我这样做!

4 个答案:

答案 0 :(得分:1)

使用[]

df.withColumn("item", df["item"][0])

答案 1 :(得分:1)

因此,如果您查看架构,则问题将很明显-您尝试作为子集的列不是数组。因此解决方案是。*扩展列。

df.select('code.*', 'idn')

答案 2 :(得分:0)

df.withColumn("item", df["code"][0])

如果“ item”列是Array类型,如果它是字符串的Struct,则可能需要通过df.select(“ code”)。collect()[0]检查item元素的键,请参阅键(字符串)。

答案 3 :(得分:0)

python

with open("aa.dwr", "rb") as file:
  data = file.readline()
  datastring = str(data)
  while data:
    with open("out1.txt", "w") as f:
      f.write(' '.join(map(str,data)))
      f.write("\r\n")
    print("line {}: {}".format(cnt, map(str,datastring.strip())))
    data = file.readline()
    cnt +=1