我正在对pyspark数据帧列进行筛选和计数。如何将结果存储在同一数据帧中的另一个列中?

我正在对pyspark数据帧列进行筛选和计数。如何将结果存储在同一数据帧中的另一个列中?,pyspark,Pyspark,我想将下线的结果存储在同一df数据帧中的列中 df.filter(F.abs(df.Px)

我想将下线的结果存储在同一df数据帧中的列中

df.filter(F.abs(df.Px)<0.005.count()


我怎样才能做到这一点?

答案是你可以使用
union
来做到这一点。但是,在特定列下面追加行不是一个好的做法,因为您也可以有多个列,这将只给您一个额外的行和新的计数值

我在下面给出一个示例片段

from pyspark.sql import Row

df = spark.createDataFrame(pd.DataFrame([0.01, 0.003, 0.004, 0.005, 0.02], 
                                        columns=['Px']))
n_px = df.filter(func.abs(df['Px']) < 0.005).count() # count
df_count = spark.sparkContext.parallelize([Row(**{'Px': n_px})]).toDF() # new dataframe for count
df_union = df.union(df_count)

+-----+
|   Px|
+-----+
| 0.01|
|0.003|
|0.004|
|0.005|
| 0.02|
|  2.0|
+-----+
从pyspark.sql导入行
df=spark.createDataFrame(pd.DataFrame([0.01,0.003,0.004,0.005,0.02]),
列=['Px']))
n_px=df.filter(函数abs(df['px'])<0.005.count()#count
df_count=spark.sparkContext.parallelize([Row(**{Px:n_Px})]).toDF()#用于计数的新数据帧
df_union=df.union(df_计数)
+-----+
|Px|
+-----+
| 0.01|
|0.003|
|0.004|
|0.005|
| 0.02|
|  2.0|
+-----+

您已经看过了吗?我想你可以在那里找到答案。谢谢titiro89的回答,但是当我使用withColumn df=df.withColumn(“新”,df.filter(F.abs(df.Px)<0.005.count())时我得到了以下错误:col应该是Column,因为返回的值是int。请提供您在这方面的输入。您能提供一个简单的示例说明您的df和F是什么吗?df是我的pyspark数据帧,并将pyspark.sql.functions导入为FOk,但是如果您希望得到其他用户的帮助,您必须提供更多的代码,您必须知道哪一个是您的起点,您想要得到什么,还必须指定变量的含义,您可以在以下链接中看到: