Как заменить значения строк в pyspark? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть столбец с именем id, а данные выглядят так:

+ ---- + |id |+ ---- + |1 ||2 ||3 ||4 ||5 ||1 ||2 ||3 ||4 |+ ---- +

Я хочу заменить первую 6 строку 1,2,3,4,5,6 на emp и вторую 1,2,3,4 на std: возможно?

Я пытался использовать замену, но не получил желаемого ответа

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Для pyspark вы можете использовать что-то вроде ниже;

>>> from pyspark.sql import Row
>>> import pyspark.sql.functions as F
>>> 
>>> df = sc.parallelize([1,2,3,4,5,6,1,2,3,4]).map(lambda x: Row(x)).toDF(['col'])
>>> df.show()
+---+
|col|
+---+
|  1|
|  2|
|  3|
|  4|
|  5|
|  6|
|  1|
|  2|
|  3|
|  4|
+---+

>>> from pyspark.sql.window import Window
>>> df = df.withColumn("id", F.row_number().over(Window.orderBy(F.lit('A'))))
>>> df = df.withColumn('col', F.when(df.id < 7, 'emp').when(df.id >= 7, 'std')).select('col')
>>> df.show()
+---+
|col|
+---+
|emp|
|emp|
|emp|
|emp|
|emp|
|emp|
|std|
|std|
|std|
|std|
+---+   
0 голосов
/ 11 октября 2018

Это работает:

import pandas as pd 

df=pd.DataFrame({'id':[1,2,3,4,5,6,7,8,9,10],'data':[1,2,3,4,5,6,1,2,3,4]})
df.loc[:6,'New_COl'] = "emp"
df.loc[6:,'New_COl'] = "std" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...