Python 如何替换pyspark中的行值?

Python 如何替换pyspark中的行值?,python,pandas,pyspark,Python,Pandas,Pyspark,我有一个名为id的列,数据如下 +--+ |身份证| +--+ | 1 | | 2 | | 3 | | 4 | | 5 | | 1 | | 2 | | 3 | | 4 | +--+ 我想用emp替换前6行1,2,3,4,5,6,用std替换第二行1,2,3,4:可能吗 我尝试使用replace,但没有得到所需的答案这很有效: import pandas as pd df=pd.DataFrame({'id':[1,2,3,4,5,6,7,8,9,10],'data':[1,

我有一个名为id的列,数据如下

+--+ |身份证| +--+ | 1 | | 2 | | 3 | | 4 | | 5 | | 1 | | 2 | | 3 | | 4 | +--+

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

我尝试使用replace,但没有得到所需的答案

这很有效:

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" 

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

你能发布你到目前为止尝试过的代码吗?MCVE谢谢,但在我的情况下,有大行和其他列,我该怎么做?你必须在这里给我更详细的例子…大行和其他列是什么意思…?这是熊猫而不是pyspark:请解释OP和这个答案之间的联系。这应该是回答正确,因为它提供的答案是pyspark而不是pandas+1。请注意:并非总是提供真正连续的数字,这可能会导致错误的结果。@pansen感谢您的警告。我更新了代码并使用了行数,而不是单调地增加id。我认为这样更好