仅从列 pandas 中删除值

Dropping values only from a column pandas

我有一个 DataFrame,其中包含一些字符串值,我正在将其转换为整数,以供将来计算。来自列 df['Age'] 的值有一些标记为 NaN 值的错误。使用 dropna 函数我丢失了整行的一半和其他列中的大量数据。在不更改主 DataFrame 的情况下,我如何才能 select 仅计算 df['Age'] 中不是 NaN 值的值。

df['Age'] = np.where(pd.to_numeric(df['Age'], 'coerce').notnull(), df['Age'], NaN)
df = df.dropna(subset=['Age'])
df['Age'] = df['Age'].astype(int)

df['Age'] 转换为数值后,使用另一个带切片的变量。

例如,假设您有一个 income 字段:

another_df = df['income'][~ps.isnull(df['age'])] * 2

或者,更一般地说:

another_df = df['income'][~ps.isnull(df['age'])].apply(lambda x: x*2)

并且您可以在 apply 调用中使用任何函数

注意:您的原始数据框 df 保持不变

至select年龄不为空的行:

df[df.Age.notnull()]

或者您可能只想要年龄:

df[[df.Age.notnull()].Age