python - PandasNotImplementedError:方法 `pd.Series.__iter__()` 未实现。如果您想将数据收集为 NumPy 数组
问题描述
我尝试在 Koalas dataframe 中创建一个新列df
。数据框有 2 列:col1
和col2
. 我需要创建一个新列newcol
作为col1
和col2
值的中位数。
import numpy as np
import databricks.koalas as ks
# df is Koalas dataframe
df = df.assign(newcol=lambda x: np.median(x.col1, x.col2).astype(float))
但我收到以下错误:
PandasNotImplementedError:该方法
pd.Series.__iter__()
未实现。如果要将数据收集为 NumPy 数组,请改用“to_numpy()”。
我也试过:
df.newcol = df.apply(lambda x: np.median(x.col1, x.col2), axis=1)
但它没有用。
解决方案
我有同样的问题。需要注意的是,我使用的是 pyspark.pandas 而不是考拉,但我的理解是 pyspark.pandas 来自考拉,所以我的解决方案可能仍然有帮助。我尝试用考拉测试它,但无法运行一个合理版本的集群。
import pyspark.pandas as ps
data = {"col_1": [1,2,3], "col_2": [4,5,6]}
df = ps.DataFrame(data)
median_series = df[["col_1","col_2"]].apply(lambda x: x.median(), axis=1)
median_series.name = "median"
df = ps.merge(df, median_series, left_index=True, right_index=True, how='left')
在应用时,lambda 参数 x 是每行的 pandas.Series,所以我使用了它的中值方法。令人讨厌的是,我无法分配任何工作,我发现的唯一方法就是进行这种丑陋的合并。哦,并且曾经让 df 保持相同的行数让您放心,但根据上下文,内部可能会很好
推荐阅读
- powershell - 外壳 | 在特定模式后从 .txt 中删除行
- javascript - 使用谷歌图表和 PHP 显示 Y 轴标题和 X 轴标题的问题
- html - 带有图像的 SVG 链接 (HTML)
- clojure - Google BigQuery API 获取 Clojure 中非美国位置运行作业的状态
- python-3.x - requests.get(url).headers.get('content-disposition') 在 PYTHON 上返回 NONE
- sql - 如何按范围划分列?
- php - 左/内连接显示了 16 个条目,但我的数据库中只有 4 个
- json - 从json文件中删除字符串上方和下方的行
- javascript - 如果文本框为空,我想禁用按钮
- javascript - HTMLMediaElement.muted = true 便携吗?