相关疑难解决方法(0)

NameError:名称'reduce'未在Python中定义

我正在使用Python 3.2.试过这个:

xor = lambda x,y: (x+y)%2
l = reduce(xor, [1,2,3,4])
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

l = reduce(xor, [1,2,3,4])
NameError: name 'reduce' is not defined
Run Code Online (Sandbox Code Playgroud)

尝试打印reduce到交互式控制台 - 出现此错误:

NameError: name 'reduce' is not defined
Run Code Online (Sandbox Code Playgroud)


reduce在Python 3.2真的删除?如果是这样的话,还有什么选择呢?

python reduce python-3.2

176
推荐指数
3
解决办法
10万
查看次数

在pyspark中groupBy之后的列别名

我需要在下面一行中得到的数据框,在groupBy之后的max('diff')列中有一个别名"maxDiff".但是,下面的行不做任何改变,也不会抛出错误.

 grpdf = joined_df.groupBy(temp1.datestamp).max('diff').alias("maxDiff")
Run Code Online (Sandbox Code Playgroud)

python scala apache-spark apache-spark-sql pyspark

21
推荐指数
3
解决办法
4万
查看次数

如何为python/pyspark数据帧中的所有列添加后缀和前缀

我在 pyspark 中有一个超过 100 列的数据框。我想要做的是对于所有我想在列名的开头和列名的末尾添加回勾号(`)的列名。

例如:

column name  is testing user. I want `testing user`
Run Code Online (Sandbox Code Playgroud)

在 pyspark/python 中是否有一种方法可以做到这一点。当我们应用代码时,它应该返回一个数据框。

python apache-spark pyspark spark-dataframe

13
推荐指数
4
解决办法
2万
查看次数

重命名数据框pyspark中的列添加字符串

我使用 Pandas 在 Python 中编写了代码,将“VEN_”添加到列名称的开头:

Tablon.columns = "VEN_" + Tablon.columns
Run Code Online (Sandbox Code Playgroud)

它工作正常,但现在我正在使用 PySpark,但它不起作用。我试过了:

Vaa_total.columns = ['Vaa_' + col for col in Vaa_total.columns]
Run Code Online (Sandbox Code Playgroud)

或者

for elemento in Vaa_total.columns:
    elemento = "Vaa_" + elemento
Run Code Online (Sandbox Code Playgroud)

还有其他类似的事情,但它不起作用。

我不想替换列名称,我只想保留它,但在开头添加一个字符串。

dataframe pyspark

5
推荐指数
1
解决办法
3739
查看次数

使用UDF处理多个列时堆栈溢出

我有一个类型DataFrame很多的列str,我想将一个函数应用于所有这些列,而不重命名它们或添加更多列,我尝试使用for-in循环执行withColumn(参见下面的示例),但通常在我运行代码时,它显示了Stack Overflow(它很少有效),这DataFrame根本不大,它只有~15000条记录.

# df is a DataFrame
def lowerCase(string):
    return string.strip().lower()

lowerCaseUDF = udf(lowerCase, StringType())

for (columnName, kind) in df.dtypes:
    if(kind == "string"):
        df = df.withColumn(columnName, lowerCaseUDF(df[columnName]))

df.select("Tipo_unidad").distinct().show()
Run Code Online (Sandbox Code Playgroud)

完整的错误很长,因此我决定只粘贴一些行.但是你可以在这里找到完整的跟踪

Py4JJavaError:调用o516.showString时发生错误.:org.apache.spark.SparkException:作业因阶段失败而中止:阶段2.0中的任务1失败4次,最近失败:阶段2.0中丢失的任务1.3(TID 38,worker2.mcbo.mood.com.ve): java.io.ObjectInputStream中的java.lang.StackOverflowError $ BlockDataInputStream.readByte(ObjectInputStream.java:2774)

我认为这个问题产生的原因是这个代码启动了许多工作(每个类型一个string),你能告诉我另一个选择或我做错了吗?

python user-defined-functions apache-spark apache-spark-sql pyspark

4
推荐指数
1
解决办法
2157
查看次数