por*_*efs 10 python dataframe pandas
我有一个熊猫数据帧.我的一个列应该只是浮点数.当我尝试将该列转换为浮点数时,我发出警告,其中有字符串.我想删除此列中值为字符串的所有行...
EdC*_*ica 18
convert_objects与param一起使用convert_numeric=True会将任何非数字值强制转换为NaN:
In [24]:
df = pd.DataFrame({'a': [0.1,0.5,'jasdh', 9.0]})
df
Out[24]:
a
0 0.1
1 0.5
2 jasdh
3 9
In [27]:
df.convert_objects(convert_numeric=True)
Out[27]:
a
0 0.1
1 0.5
2 NaN
3 9.0
In [29]:
Run Code Online (Sandbox Code Playgroud)
然后你可以删除它们:
df.convert_objects(convert_numeric=True).dropna()
Out[29]:
a
0 0.1
1 0.5
3 9.0
Run Code Online (Sandbox Code Playgroud)
UPDATE
从版本开始,0.17.0这个方法现在已被弃用,你不得不使用to_numeric它Series而不是整个df,因此等效代码现在是:
df.apply(lambda x: pd.to_numeric(x, errors='coerce')).dropna()
Run Code Online (Sandbox Code Playgroud)
我的一列应该只是浮点数。我想删除此列中值为字符串的所有行
您可以通过将系列转换为数字pd.to_numeric,然后使用pd.Series.notnull. float需要将转换为单独的步骤,以避免您的系列恢复为objectdtype。
# Data from @EdChum
df = pd.DataFrame({'a': [0.1, 0.5, 'jasdh', 9.0]})
res = df[pd.to_numeric(df['a'], errors='coerce').notnull()]
res['a'] = res['a'].astype(float)
print(res)
a
0 0.1
1 0.5
3 9.0
Run Code Online (Sandbox Code Playgroud)