如何在DataFrame中创建基于其他列计算值的新列
解决方法
从你提供的代码和需求来看,问题出在语法错误以及未使用对应DataFrame库的正确操作方式,分两种常见场景说明:
若使用PySpark(从limit(10)判断大概率是)
PySpark中新增列推荐用withColumn做列级运算(比逐行处理效率高),正确代码如下:
# 通过列直接相乘生成新列,覆盖原DataFrame short_df = short_df.withColumn('Revenue', short_df['UnitPrice'] * short_df['Quantity']) display(short_df.limit(10))
原代码的问题:short_df.(lambda...)多了一个多余的点,且PySpark不支持这种直接赋值lambda的方式。
若使用Pandas
Pandas中两种实现方式,优先选列运算:
方法1:直接列运算(推荐,效率更高)
short_df['Revenue'] = short_df['UnitPrice'] * short_df['Quantity'] display(short_df.head(10))
方法2:apply逐行处理
# 需指定axis=1表示按行处理 short_df['Revenue'] = short_df.apply(lambda row: row['UnitPrice'] * row['Quantity'], axis=1) display(short_df.head(10))
内容的提问来源于stack exchange,提问作者Manu Chadha
相关产品推荐
相关产品推荐

