我正在使用
sklearn-pandas.DataFrameMapper
来预处理我的数据。我不想输入特定列。如果此列是
Null
,我只想删除该行。有没有办法做到这一点?
虽然
DataFrameMapper
没有内置方法来删除具有空值的行,但你可以通过在
DataFrameMapper
管道之前使用 Pandas 的
.dropna()
方法轻松实现这一点。
以下是如何操作:
import pandas as pd
from sklearn_pandas import DataFrameMapper
from sklearn.preprocessing import StandardScaler
# 示例数据
df = pd.DataFrame({
'col1': [1, 2, None, 4],
'col2': [5, 6, 7, 8],
'col3': ['a', 'b', 'c', 'd'],
})
# 你想要检查空值的列
column_to_check = 'col1'
# 删除具有空值的行
df = df.dropna(subset=[column_to_check])
# 定义 DataFrameMapper
mapper = DataFrameMapper([
(['col1', 'col2'], StandardScaler()),
('col3', None) # 不对 'col3' 应用转换
])
# 应用转换
transformed_data = mapper.fit_transform(df)
# 打印转换后的数据
print(transformed_data)
在这个例子中:
-
我们首先使用
df.dropna(subset=[column_to_check])
删除'col1'
中具有空值的行。 -
然后,我们像往常一样定义
DataFrameMapper
。 -
DataFrameMapper
现在将在没有空值的 DataFrame 上运行。
通过这种方式,你可以在使用
DataFrameMapper
进行预处理之前有效地处理特定列中的空值。