You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Databricks中调用列对象报错:'column object is not callable'

解决Databricks中绘制散点图时'column object is not callable'错误

问题原因

你在Databricks中使用的df应该是Spark DataFrame,而非Pandas DataFrame。Spark DataFrame通过df['age']获取的是Column对象,而matplotlib的scatter函数无法直接处理这种对象,因此触发报错。即便改用索引方式访问,本质还是拿到Column对象,所以错误依旧。

解决方案

方法一:转换为Pandas DataFrame(适合小数据量)

将Spark DataFrame转成Pandas DataFrame后,就可以用你原本的代码逻辑绘制图表:

import matplotlib.pyplot as plt

# 转换为Pandas DataFrame(数据量过大时会占用较多内存,需注意)
pd_df = df.toPandas()

plt.figure(figsize=(10, 6))
plt.scatter(pd_df['age'], pd_df['concrete_strength'])
plt.title('Scatter Plot of Age vs. Concrete Compressive Strength')
plt.xlabel('Age(days)')
plt.ylabel('Concrete Compressive Strength (MPa)')
plt.grid(True)
plt.show()

方法二:提取列数据为Python序列(适合大数据量)

如果数据量较大,不想全量转成Pandas,可以单独提取列的数值列表:

import matplotlib.pyplot as plt

# 从Spark DataFrame中提取列的所有值
age_values = [row['age'] for row in df.select('age').collect()]
strength_values = [row['concrete_strength'] for row in df.select('concrete_strength').collect()]

plt.figure(figsize=(10, 6))
plt.scatter(age_values, strength_values)
plt.title('Scatter Plot of Age vs. Concrete Compressive Strength')
plt.xlabel('Age(days)')
plt.ylabel('Concrete Compressive Strength (MPa)')
plt.grid(True)
plt.show()

额外排查项

检查列名是否与Spark DataFrame的内置方法重名(比如count、sum这类),如果列名和方法名冲突,也可能引发类似错误。可以通过df.columns查看所有列名,确认age和concrete_strength是合法列名。

内容的提问来源于stack exchange,提问作者Jaswanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:37:03