如何将字符串添加到特定值?Pyspark

v6ylcynt  于 2023-03-01  发布在  Spark
关注(0)|答案(1)|浏览(144)

| 第1列|第2列|新列1|
| - ------|- ------|- ------|
| 奥拉|1234|第300/1234号决议|
| 奥拉|0123|第300/0123号决议|
| 应用程序|小零零五|第100/0005号决议|
| 奥拉|小行星7778|第300/7778号决议|
| 应用程序|小行星9999|第100/9999号决定|
如果我想创建一个新的列,使列2中的数字取决于列1的值,我该怎么做?

  • 如果是ORA,则添加300|使用col 2编号
  • 如果是APP,则加100|使用col 2编号

最终,我想拥有

  • 300|1234
  • 300|0123
  • 100|0005
  • 300|7778
  • 100|9999

df = df. with列('NewCol 1',F.当(F.列('Col 1' == Ora)),'|“,300”,“第二列”)。否则为(“100”,“第二列”)

kpbwa7wx

kpbwa7wx1#

可以使用“concat”函数合并列值

from pyspark.sql.types import StructType, StructField, StringType, IntegerType
from pyspark.sql.functions import *
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
# Define schema
schema = StructType([
    StructField('Col1', StringType(), True),
    StructField('Col2', StringType(), True)
])

# Original data
data = [
    {'Col1': 'Ora', 'Col2': '1234'},
    {'Col1': 'Ora', 'Col2': '0123'},
    {'Col1': 'APP', 'Col2': '0005'},
    {'Col1': 'Ora', 'Col2': '7778'},
    {'Col1': 'APP', 'Col2': '9999'}
]

# Create df from original data
df = spark.createDataFrame(data, schema)

# Add the new column using concat and when
df1 = df.withColumn(
    'NewCol1',
    concat(
        when(df['Col1'] == 'Ora', lit('300|')).
        when(df['Col1'] == 'APP', lit('100|')),
        df['Col2']
    )
)

# Show the contents of the DataFrame
df1.show()

+----+----+--------+
|Col1|Col2| NewCol1|
+----+----+--------+
| Ora|1234|300|1234|
| Ora|0123|300|0123|
| APP|0005|100|0005|
| Ora|7778|300|7778|
| APP|9999|100|9999|
+----+----+--------+

相关问题