python - 我正在尝试将函数应用于 DataFrame 的列,但得到签名匹配的循环错误
问题描述
您好我正在尝试运行以下代码:
def f(df):
new = pd.Series(df)
i = new.str.lower() \
.str.replace('[^a-z\s]', '') \
.str.split(expand=True) \
.stack()
# generate bigrams by concatenating unigram columns
j = i + ' ' + i.shift(-1)
digrams = []
for k in j[:]:
k=str(k)
k = k.split(" ")
s = "_".join(k)
digrams.append(s)
return pd.Series(digrams)
df = pd.read_csv("labeled_new.csv")
#vectorize documents
df["abstract_text_x"]=df["abstract_text_x"].apply(f)
所以 df 是一个具有多列和多行的 DataFrame,我试图将函数 f 仅应用于数据帧的 abstract_text_x 列。此列包含一个字符串格式的文本。函数 f 将创建二元组并用“_”连接单词。该函数有效,问题是当我试图将 f 的结果返回到数据帧时。我收到以下错误:
TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')
这意味着什么?我该如何解决?
解决方案
当您的代码需要整数类型但接收到字符串或其他内容时,就会出现该错误。尝试将 str() 类型转换添加到变量 s 时,将其附加到 digrams。还要确保“abstract_text_x”的数据类型是字符串,而不是对象或数组。基本上,只需遍历您的数据并检查您的数据类型,您就会发现一些不匹配的内容。
推荐阅读
- javascript - 来自弹出窗口的异步 onClick 事件返回值
- java - 使用 Gradle 时 Keycloak 无法加载提供程序类
- docker - 为什么 strace 默认在 docker 中工作?
- c# - Visual Studio 调试器随机跳过行
- python - 修剪模型不会提高推理速度或减小模型大小
- javascript - 自定义钩子中的useEffect没有在React中以正确的顺序调用
- json - 创建一个在读取 JSON 字符串后摄取数据的存储过程
- php - 更新客户收货地址时发送电子邮件通知
- oracle - 查找由(添加两个列)行复制的行
- google-bigquery - 对表的一列进行更新的成本是否与 BigQuery 中的 FTS 一样高?