我有一个4000*4000的dataframe,我需要所有栏位值都是float型,但是这个dataframe里面随机有很多非浮点数的脏数据,我怎么样做才能高效的将所有非浮点数转换为0
时间: 2024-03-19 07:43:13 浏览: 92
你可以通过 Pandas 库提供的 DataFrame 的 applymap() 方法,对 dataframe 中的所有元素进行批量操作。可以自定义一个函数,用来判断元素是否是浮点数,如果是则返回该元素,否则返回 0。然后将这个函数作为 applymap() 方法的参数即可。
下面是一个示例代码:
```python
import pandas as pd
# 定义一个函数,用来判断元素是否是浮点数,如果是则返回该元素,否则返回 0
def check_float(x):
try:
float(x)
return x
except ValueError:
return 0
# 生成一个示例 dataframe
df = pd.DataFrame({'col1': [1, 2, 'a', 4],
'col2': [5, 'b', 7, 8],
'col3': ['c', 10, 11, 'd'],
'col4': [12, 'e', 'f', 15]})
# 使用 applymap() 方法批量处理 dataframe 中的所有元素
df = df.applymap(lambda x: check_float(x))
print(df)
```
输出结果为:
```
col1 col2 col3 col4
0 1 5 0 12
1 2 0 10 0
2 0 7 11 0
3 4 8 0 15
```
可以看到,所有非浮点数的元素都被转换成了 0。
阅读全文