Как извлечь всю часть строки после определенного символа в столбце данных? - PullRequest
0 голосов
/ 08 января 2019

Я работаю над использованием приведенного ниже кода для извлечения последнего номера имени столбца данных в панде.

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?

1 Ответ

0 голосов
/ 08 января 2019

Используйте 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')
...