gpt4 book ai didi

python - SparkPandasNotImplementedError : .iloc requires numeric slice or conditional boolean Index

转载 作者:行者123 更新时间:2023-12-03 08:20:06 24 4
gpt4 key购买 nike

我在Databricks上不断收到以下错误:

SparkPandasNotImplementedError: .iloc requires numeric slice or conditional boolean Index, got You are trying to use pandas function .iloc[..., ...], use spark function select, where



这是我的代码:
import re 
import nltk
import heapq
corpus = []
for i in range(0, len(Y)):
describe = re.sub('[^a-zA-Z]', ' ', Y.iloc[i, 0])
describe = describe.lower()
describe = describe.split()
describe = ' '.join(describe)
corpus.append(describe)

该代码在Spyder中可以正常工作,但在数据块中则不能。

最佳答案

我尝试成功重现与您相同的问题,如下代码和图所示。

import numpy as np
import pandas as pd
import databricks.koalas as ks
dates = pd.date_range('20130101', periods=6)
pdf = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
df = ks.from_pandas(pdf)
print(pdf.iloc[0,0])
print(df.iloc[0,0])

enter image description here

由于缺少对变量 Y的必要描述,我猜 Y是一个数据帧,但区别在于本地Spyder上的 pandas数据帧,databricks中的 Koalas 数据帧。

根据Koalas的 databricks.koalas.DataFrame.iloc 文档,它不支持Koalas数据帧的 iloc(int, int)操作。

enter image description here

因此,如果要对数据块中每行的第一列值进行一些操作,则有以下两种解决方案。
  • 确保Y是与数据块相同的脚本中的pandas数据帧。
  • Y必须是Koalas数据框,请尝试以下代码。
    # Here, `Y` is a Koalas dataframe
    for row in Y.iterrows():
    describe = re.sub('[^a-zA-Z]', ' ', row[1][0])
    describe = describe.lower()
    describe = describe.split()
    describe = ' '.join(describe)
    corpus.append(describe)

    您可以在下面看到我的示例代码和结果,函数iterrows可以帮助获取每行的第一列值。

    enter image description here
  • 关于python - SparkPandasNotImplementedError : .iloc requires numeric slice or conditional boolean Index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59834261/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com