kateli1991

Python过滤单个数据帧列中的数字和字符串



我有一个数据帧,其中单个列Value包含字符串。其中一些字符串值是数值。我意识到,由于它们在同一列中,它们都被视为字符串,但我需要区分那些实际上是字符串的和那些实际上是数字的。在

我想创建另外两个名为Value_NumValue_Txt的列,然后删除原来的Value列。在

我运行了一个使用以下命令的脚本:

df['Value_Num'] = df.Value.convert_objects(convert_numeric=true)

真是太好了。但是,在转换到较新版本时,我遇到以下错误:

FutureWarning: convert_objects is deprecated. Use the data-type specific converters pd.to_datetime, pd.to_timedelta and pd.to_numeric.

我不知道如何用那个pd.to_numeric函数重写我的命令。在

谢谢。在


已被浏览了13944次
6 日,20 小时 之前提问
1 个回答
fefe Tyson

要避免convert_objects发出的FutureWarning,可以使用^{} with ^{}

pd.to_numeric(df['Value'], errors='coerce')

这将非数字字符串设置为NaN,这正是我们想要的Value_Num。在

然后我们可以使用pd.notnull来标识{}中的非NaN值的行,并在Value列中将这些行设置为NaN。因此,Value列获得我们想要的Value_Txt列的值。将Value重命名为Value_Txt完成任务:


^{2}$

收益率

    Value   Value_Num   type
0       1        1.00  False
1    1.23        1.23  False
2     foo         NaN   True
3  3.14e6  3140000.00  False
评论 - 2020年7月29日 10:44

最新Python问答

推荐Python问答