【问题标题】:Pandas delete parts of string after specified character inside a dataframe熊猫在数据框中指定字符后删除部分字符串
【发布时间】:2014-07-09 03:53:45
【问题描述】:

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

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

我想删除 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

【问题讨论】:

    标签: python string pandas


    【解决方案1】:

    您可以通过将重新格式化函数传递给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])
    

    这会给你想要的结果:

       obs   a  b  c  d
    0    1   1  1  2  3
    1    2  12  4  5  5
    2    3  21  4  5  5
    

    【讨论】:

    • 太棒了!这正是我想要的!!谢谢!!
    • 使用.str 方法会更快,因为这是矢量化的,所以df.a = df.a.str.split('-')[0] 应该执行得更快
    • 我知道这有点晚了,但是如果列名中有一个空格,比如“我的名字”,但你不想更改名称,有没有办法做到这一点?到“my_name”(因为“df.my name”不起作用,但“df.my_name”可以)。
    • 您需要df['my name']。如果列名中有空格,请通过df[col_name] 访问它
    猜你喜欢
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2017-07-08
    相关资源
    最近更新 更多