【问题标题】:How to extract entire part of string after certain character in dataframe column?如何在数据框列中的某个字符之后提取整个字符串部分?
【发布时间】:2019-06-02 16:40:54
【问题描述】:

我正在使用下面的代码来提取熊猫数据框列名的最后一个数字。

names = df.columns.values
new_df = pd.DataFrame()
for name in names:    
    if ('.value.' in name) and df[name][0]:
        last_number = int(name[-1])
        print(last_number)
        key, value = my_dict[last_number]
        try:
            new_df[value][0] = list(new_df[value][0]) + [key]
        except:
            new_df[value] = [key]

name 是一个如下所示的字符串:

'data.answers.1234567890.value.0987654321'

我想在.value. 之后取整个数字,就像在IF 语句中一样。在上面的IF 语句中如何做到这一点?

【问题讨论】:

    标签: python python-3.x string pandas


    【解决方案1】:

    使用str.split,并使用-1提取最后一个切片(也优雅地处理错误情况):

    df = pd.DataFrame(columns=[
        'data.answers.1234567890.value.0987654321', 'blahblah.value.12345', 'foo'])    
    

    df.columns = df.columns.str.split('value.').str[-1]
    df.columns
    # Index(['0987654321', '12345', 'foo'], dtype='object')
    

    另一种选择是在 listcomp 中拆分:

    df.columns = [x.split('value.')[-1] for x in df.columns]
    df.columns
    # Index(['0987654321', '12345', 'foo'], dtype='object')
    

    【讨论】:

      猜你喜欢
      • 2019-07-08
      • 2012-09-25
      • 2013-03-28
      • 2021-05-20
      • 2018-06-27
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 2020-11-23
      相关资源
      最近更新 更多