num_cols = raw_data.columns.select_dtypes(include=[DoubleType]).tolist()报错'list' object has no attribute 'select_dtypes',请修改
时间: 2024-10-15 19:17:03 浏览: 45
这个错误提示是因为`raw_data.columns`是一个列名(通常是一个Pandas DataFrame的Index对象),它并没有`select_dtypes`属性。`select_dtypes`是Pandas DataFrame的一个方法,用于筛选数据类型。
正确的做法是先检查每一列的数据类型,再选择`DoubleType`(如果它是Spark DataFrame的话,可能是` DoubleType`,如果是Pandas则是`np.number`等)。下面是修改后的代码示例:
```python
import pyspark.sql.types as st
# 如果是Spark DataFrame
num_cols = [col for col in raw_data.columns if isinstance(raw_data[col].dtype, st.DoubleType)]
# 或者是Pandas DataFrame
if isinstance(raw_data, pd.DataFrame):
num_cols = raw_data.select_dtypes(include='number').columns.tolist()
else:
raise TypeError("raw_data should be a Spark DataFrame or a Pandas DataFrame")
```
这段代码首先检查`raw_data`的每一列是否为`DoubleType`,如果是就添加到`num_cols`列表中。如果是Pandas DataFrame,则直接使用`select_dtypes`筛选数字类型的列。如果有其他类型的需求,可以相应调整数据类型检查条件。
阅读全文