is_numeric = data.iloc[15].applymap(lambda x: not bool(pattern.search(str(x)))).all().all()AttributeError: 'Series' object has no attribute 'applymap'怎么修改
时间: 2024-03-12 10:48:25 浏览: 103
您可以尝试使用 `apply` 方法替换 `applymap` 方法,因为 `applymap` 方法只适用于 DataFrame 对象,而不适用于 Series 对象。因此,您可以将 `applymap` 方法替换为 `apply` 方法,如下所示:
```
is_numeric = data.iloc[15].apply(lambda x: not bool(pattern.search(str(x)))).all()
```
这样,您就可以应用 lambda 函数到 Series 对象中的每个元素,并返回一个包含所有结果的布尔值。
相关问题
对df按index和column对df中的每一个值都应用.apply(lambda x: ‘*’ if x < 0.05 else ‘’)
在pandas DataFrame中,你可以使用`.apply()`函数结合`lambda`表达式来按照索引(index)和列(column)的条件对每个元素操作。假设你的DataFrame `df` 中的数据需要检查是否小于0.05,并将小于0.05的值替换为'*',可以这样做:
```python
df.applymap(lambda x: '*' if x < 0.05 else '')
```
这里 `.applymap()` 函数会遍历数据框中的每一个元素,`lambda x: ...` 是一个匿名函数,它接收一个值 `x`,如果 `x` 小于0.05,则返回 '*',否则返回空字符串 (''),从而达到替换的目的。
注意:`applymap()` 会作用于整个DataFrame,包括数值型和非数值型(如字符串)的列。如果你只想针对数值型列进行操作,可以在调用前先筛选出来:
```python
numeric_cols = df.select_dtypes(include='number').columns
df[numeric_cols].applymap(lambda x: '*' if x < 0.05 else '')
```
阅读全文