首页 > 解决方案 > 获取 DataFrame 的 Column 值导致 'Column' 对象不可调用

问题描述

对于从 FileStore 读取的流,我正在尝试检查第一行值的第一列是否等于某个字符串。不幸的是,当我以任何方式访问此列时,例如在其上启动 .toList() 时,它会抛出

    if df["Name"].iloc[0].item() == "Bob":
TypeError: 'Column' object is not callable

我从以下位置调用 customProcessing 函数:

df.writeStream\
  .format("delta")\
  .foreachBatch(customProcessing)\
[...]

在这个函数中,我试图获取值,但是获取数据的方法都不起作用。同样的错误被抛出。

    def customProcessing(df, epochId):
      
      if df["Name"].iloc[0].item() == "Bob":
[...]

是否有可能阅读单列?或者它是特定于 writeStream 的,我无法在该输入上使用条件?

标签: dataframeapache-sparkpysparkapache-spark-sql

解决方案


没有iloc火花数据框——这不是熊猫;也没有索引的概念。

如果您想获得第一个项目,您可以尝试

df.select('Name').limit(1).collect()[0][0] == "Bob"

推荐阅读