Удалить определенное значение (столбец (число)) из столбца (имя) в кадре данных Scala Spark - PullRequest
0 голосов
/ 08 февраля 2019

Кадр входных данных ::

Число |Имя

1 |1 abc ты потрясающий

2 |abc 2 ты потрясающий

58 |xyz ты потрясающий 58

Ожидаемый выходной кадр данных ::

Number |Имя

1 |abc ты потрясающий

2 |abc ты потрясающий

58 |xyz ты классный

В основном хочешь удалить значение столбца Number из столбца Name.Это может быть где угодно и сколько угодно раз.

Ответы [ 3 ]

0 голосов
/ 08 февраля 2019

Ваш пример выглядит так, как будто вы пытаетесь отобразить значения вашего фрейма данных, но если вы действительно «хотите удалить значение столбца Number из имени столбца», как вы говорите, то вы можете перебрать все столбцы и переименовать каждый из них следующим образомтак (в Java):

for (String col : df.columns()) {
    df = df.withColumnRenamed(col, col.replaceAll("[^A-Za-z]",""));
}

Если вы пытаетесь удалить числа из всего набора данных, вам придется map каждая строка:

String[] columns = df.columns();
df = df.map(row -> {
    String[] newValues = new String[columns.length];
    for (int i = 0; i < columns.length; i++) {
        newValues[i] = row.getString(i).replaceAll("[^A-Za-z]","");
    }
    return RowFactory.create(newValues);
}, RowEncoder.apply(df.schema()));
0 голосов
/ 08 февраля 2019

Вы можете попробовать это,

val removeNumber=udf((s:String,n:Int)=>{s.replaceAll(n.toString, " "); })

df=df.withColumn(col("columnName"),removeNumber(col("oldColumnName"),col("firstColumn")).drop("oldColumnName")
0 голосов
/ 08 февраля 2019

Вы можете использовать подстроку.

Например.для вашего abc 1 столбец может быть:

yourdataframename.withColumn("your_new_column_name" , substring($"abc_1_column_name" , 1, 3)).drop("abc_1_column_name")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...