从pandas数据帧中的整列中删除某些字符串

use*_*207 7 python string series python-3.x pandas

我有一个pandas数据框df,其内容如下:

  Date          Factor       Expiry         Grade  
0 12/31/1991    2.138766     3/30/1992      -3.33% 
1 10/29/1992    2.031381     2/8/1993       -1.06% 
2 5/20/1993     2.075670     6/4/1993       -6.38% 
Run Code Online (Sandbox Code Playgroud)

我想%从列中的所有行中删除字符Grade.结果应如下所示:

  Date          Factor     Expiry        Grade  
0 12/31/1991    2.138766   3/30/1992     -3.33 
1 10/29/1992    2.031381   2/8/1993      -1.06 
2 5/20/1993     2.075670   6/4/1993      -6.38 
Run Code Online (Sandbox Code Playgroud)

我使用的是Python v3.6.

Sha*_*ica 7

使用str.replace会工作:

df['Grade'] = df['Grade'].str.replace('%', '')
Run Code Online (Sandbox Code Playgroud)


jpp*_*jpp 7

您可以使用字符串切片,然后通过以下方式转换为数字类型pd.to_numeric

df['Grade'] = pd.to_numeric(df['Grade'].astype(str).str[:-1], errors='coerce')
Run Code Online (Sandbox Code Playgroud)

建议转换为float,因为一系列字符串将保存在通用且低效的object数据类型中,而数字类型允许向量化操作。

  • 感谢你的回答。赞成,因为我喜欢转换为浮动的想法。当我使用你的答案时,我收到错误“AttributeError:只能使用带有字符串值的 .str 访问器,它在 pandas 中使用 np.object_ dtype”。当我使用 `df['Grade'] = df['Grade'].str.replace('%', '')` 时没有问题。 (2认同)

U10*_*ard 5

为什么不str.rstrip()

df['Grade'] = df['Grade'].str.rstrip('%')
Run Code Online (Sandbox Code Playgroud)