SPARK添加带有值的新列以前的一些列



我有这样的数据框架:

+----------+---+
|   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|
+----------+---+------+

请帮助我这样做!

使用 []

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

,因此,如果您查看模式,问题将是显而易见的 - 您试图将子集的列不是数组。因此,解决方案是。*展开列。

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

python

import pandas as pd

array = {'code': [['I0478'],['B0527'], ['C0798'], ['C0059'], ['I0767'], ['I1001'], ['C0446']], 'idn':[0, 1, 2, 3, 4, 5, 6]}

df = pd.DataFrame(array)
df['item'] = df.apply(lambda row: str(row.code).lstrip('[').rstrip(']').strip("'").strip(), axis= 1)

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

如果" item"列是数组类型,则是字符串的结构,您可能需要检查df.Select(" code")的项目元素的键。键(字符串)具有。

相关内容

  • 没有找到相关文章

最新更新