TypeError:“DataFrame”对象在使用除法时不支持项目分配

Posted

技术标签:

【中文标题】TypeError:“DataFrame”对象在使用除法时不支持项目分配【英文标题】:TypeError: 'DataFrame' object does not support item assignment when using division 【发布时间】:2021-11-23 19:30:39 【问题描述】:

TypeError: 'DataFrame' 对象在使用除法时不支持项目分配。

在 pyspark 数据帧中划分两个整数列并收到此错误。有什么想法吗?

可重现:

simpleData = (((1, 2), (2, 6), (3, 6))
columns= ["sales","users"]
df = spark.createDataFrame(data = simpleData, schema = columns)
df = df.withColumn("users", df["users"].cast(IntegerType()))
df = df.withColumn("sales", df["sales"].cast(IntegerType()))
df['buy_rate'] = df['sales']/ df['users']

【问题讨论】:

【参考方案1】:

只是小调整。

from pyspark.sql.types import IntegerType
import pyspark.sql.functions as F
simpleData=((1, 2), (2, 6), (3, 6))
columns= ["sales","users"]
df = spark.createDataFrame(data = simpleData, schema = columns)
df = df.withColumn("users", df["users"].cast(IntegerType()))
df = df.withColumn("sales", df["sales"].cast(IntegerType()))

df1 = df\
    .withColumn("buy_rate", (F.col("sales") / F.col("users")))
display(df1)

【讨论】:

感谢 Karthik,在 withColumn() 中分配给新列的方法非常好,效果很好。 最好的祝福格雷格!!

以上是关于TypeError:“DataFrame”对象在使用除法时不支持项目分配的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:int() 参数必须是字符串、类似字节的对象或数字,而不是“DataFrame”

获取TypeError:在Pandas Dataframe中设置索引时,'list'对象不可调用

Fastparquet 在使用 dataframe.to_parquet() 时给出“TypeError:预期的 str、字节或 os.PathLike 对象,而不是 _io.BytesIO”

TypeError:无法连接类型为“<class 'yfinance.ticker.Options'>”的对象;只有 Series 和 DataFrame obj 是有效的

PySpark:TypeError:“行”对象不支持项目分配

DataFrame 中的 Datetime 对象,只有时间