Pandas在数据帧内删除指定字符后的部分字符串

jon*_*nas 9 python string pandas

我想要一个简单的方法来删除数据帧内指定字符后的字符串部分.这是一个简化的例子:

DF:

   obs         a  b  c  d
0    1   1-23-12  1  2  3
1    2  12-23-13  4  5  5
2    3  21-23-14  4  5  5
Run Code Online (Sandbox Code Playgroud)

我想在第一个符号后删除a列中的部分,我的预期输出是:

newdf:

   obs   a  b  c  d
0    1   1  1  2  3
1    2  12  4  5  5
2    3  21  4  5  5
Run Code Online (Sandbox Code Playgroud)

joe*_*.ct 13

您可以通过将重新格式化函数传递给apply方法来重新格式化值,如下所示:

from StringIO import StringIO
import pandas as pd

data = """   obs  a  b  c  d
1   1-23-12  1  2  3
2  12-23-13  4  5  5
3  21-23-14  4  5  5"""

# Build dataframe from data
df = pd.read_table(StringIO(data), sep='  ')

# Reformat values for column a using an unnamed lambda function
df['a'] = df['a'].apply(lambda x: x.split('-')[0])
Run Code Online (Sandbox Code Playgroud)

这可以为您提供所需的结果:

   obs   a  b  c  d
0    1   1  1  2  3
1    2  12  4  5  5
2    3  21  4  5  5
Run Code Online (Sandbox Code Playgroud)

  • 使用`.str`方法会更快,因为这是矢量化的,所以`df.a = df.a.str.split(' - ')[0]`应该更快地执行 (2认同)