2014-01-03 6 views
3

У меня есть файл данных pandas под названием timedata с разными именами столбцов, некоторые из которых содержат слово Вибрация, некоторые эксцентриситеты. Можно ли создать кадр данных только столбцов, содержащих слово Вибрация?Создайте подмножество DataFrame, зависящее от имени столбца

Я попытался с помощью

vib=[] 
for i in timedata: 
    if 'Vibration' in i: 
     vib=vib.append(i) 

, чтобы затем создать DataFrame на основе indicies этих столбцов. Это действительно не самый эффективный способ сделать это, и я уверен, что должно быть что-то простое в понимании списка.

EDIT

Dataframe формы:

df = DataFrame({'Ch 1:Load': randn(10), 'Ch 2:Vibration Brg 1T ': randn(10), 'Ch 3:Eccentricity Brg 1H ': randn(10), 'Ch 4:Vibration Brg 2T ': randn(10)}) 

К сожалению у меня медленный день! спасибо за любую помощь

ответ

11

Что-то вроде этого, чтобы вручную выбрать все столбцов со словом «Вибрация» в нем:

df[[col for col in df.columns if "Vibration" in col]] 

Вы также можете сделать то же самое с помощью метода filter:

df.filter(like="Vibration") 

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

df.filter(regex='Ecc|Vibration') 
+0

фильтр отлично работает для того, что мне нужно. Большое спасибо. Извините, я не могу выдвинуть свою кандидатуру, потому что моя репутация слишком низкая. – user2761786

+0

Можно ли сделать что-то вроде df.filter (например = 'Ecc' или 'Vibration')? Я пробовал это, и он не работал – user2761786

+2

Добавлена ​​опция регулярного выражения? – joris

0
newDf = Df.loc[:,['Vibration']] 

или

newDf = Df.loc[:,['Vibration','eccentricity']] 

, чтобы получить больше collumns

для поиска значения в collumn:

newDf = Df[Df["CollumnName"] == "vibration"]  
+0

К сожалению, я не сделал себе ясно, имена столбцов не просто включить слово «Вибрация». например они находятся в форме «Ch 2: Вибрация Brg 6T» – user2761786

+0

Я получаю сообщение об ошибке KeyError: «[['Vibration]] не во ВСЕХ в столбцах [столбцы]». Спасибо за быстрый ответ, хотя – user2761786

+0

Обновлен мой ответ, на что я думаю, что вам нужно. Обновите свое исходное сообщение, чтобы показать свой макет DataFrame. –

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