Как усечь начало всех столбцов в кадре данных pandas? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть кадр данных pandas с довольно большим количеством разных столбцов (4800+), и все они названы в честь файловых каталогов. Например, у меня может быть два столбца с именами:

Return.ReturnData.IRS990.EOYAmount и Return.ReturnData.IRS990PF.EOYAmount, как вы можете видеть, единственная разница - IRS990/IRS990PF. Но эти два столбца содержат похожие данные, поэтому я хочу переименовать их оба в EOYAmount.

Очевидно, у меня есть пара тысяч файлов, поэтому я не могу сделать это для каждого из них, но я хотел знать, как обрезать все до последней менструации? Если у кого-то есть предложения, дайте мне знать. Спасибо!

1 Ответ

1 голос
/ 06 августа 2020

Вы можете использовать следующее:

import re

rename_pattern = r'.*\.' # will remove everything until 
                         # the last . in name (greedy regex, longest match)

# applies the lambda mapper 
# function to all columns and replaces the rename_pattern with an empty string
df = df.rename(columns=lambda col_name: re.sub(rename_pattern,'',col_name))

Изменить:

Чтобы сохранить только часть имен столбцов, вы можете изменить приведенный выше код следующим образом:

import re

rename_pattern = r'(.*?\.){2}' 

df = df.rename(columns=lambda col_name: re.sub(rename_pattern,'',col_name))

( ) в rename_pattern группирует регулярное выражение и позволяет указать количество вхождений с завершающим {2}. Если ваш путь длиннее и вам нужно удалить более длинный шаблон, вы можете изменить этот 2 любым числом, которое вам нравится. Еще одно изменение - сделать .* не жадным сопоставлением с ?. Это приведет к совпадению только одного слова, за которым следует точка.

Вместо r'(.*?\.){2}' будет r'(\w+\.){2}'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...