繁体   English   中英

如何替换pyspark中的行值?

[英]How to replace row values in pyspark?

我有一列名称是id和数据是这样的

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

我想用emp替换前6行1,2,3,4,5,6 ,用std替换第二1,2,3,4:可以吗?

我尝试使用替换,但是没有得到想要的答案

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

这有效:

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" 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM