如何在数据框列中的某个字符之后提取整个字符串部分?

Rus*_*ord 3 python string python-3.x pandas

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

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]
Run Code Online (Sandbox Code Playgroud)

name 是一个看起来像这样的字符串:

'data.answers.1234567890.value.0987654321'
Run Code Online (Sandbox Code Playgroud)

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

cs9*_*s95 5

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

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

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

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

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