2015-09-17 4 views
0

Я хотел бы пройти через все столбцы в кадре данных и переименовать (или отобразить) столбцы, если они содержат определенные строки.pandas переименовать столбец, если содержит строку

Например: переименовать все столбцы, содержащие «сельское хозяйство» со строкой символов «агро»

Я думал об использовании rename и str.contains, но не могу понять, как объединить их, чтобы достичь того, чего я хочу.

ответ

1

Вы можете использовать str.replace обрабатывать столбцы, а затем повторно назначить новые столбцы обратно в DataFrame:

import pandas as pd 
df = pd.DataFrame({'A_agriculture': [1,2,3], 
        'B_agriculture': [11,22,33], 
        'C': [4,5,6]}) 
df.columns = df.columns.str.replace('agriculture', 'agri') 
print df 

Выход:

A_agri B_agri C 
0  1  11 4 
1  2  22 5 
2  3  33 6 
+0

ооо спасибо да, что делает много смысл. Знаете ли вы, хотите ли я заменить целую строку 'agri', а не просто« сельское хозяйство »? – As3adTintin

+1

Шаблон, указанный в '' replace'', является регулярным выражением, поэтому вы можете сделать что-то вроде: '' replace ('. * Agriculture *', 'agri') ''; однако это приведет к тому, что обновленный DataFrame будет иметь два столбца с тем же именем. –

+0

oh ok, regex. хорошо знать. благодаря! – As3adTintin

Смежные вопросы