2015-05-16 2 views
1

У меня есть файл HDF, который распечатывается как это:Поиск по строкам в панд

print dt['data1'] 
=> 

       column1 column2 column3 
row1    3  8  2   
row2    4  3  0 
row3    12  1  14 
row4    -5  5  25 

1) Как мне выполнить поиск по строкам или, вернее, «выбрать» его? То есть

dt.get_row('row3') 
=> row3    12  1  14 

2) И как я могу искать по значению строки и столбца? То есть

dt.get_row('row2').where(column_value=3) 
=> column2 

ответ

2

Настройка ваших панд DataFrame в df:

df = dt['data1'] 

Вы можете получить строку с ix:

df.ix['row3'] 

Это дает результат в виде Series:

column1 12 
column2  1 
column3 14 
Name: row3, dtype: int64 

вы также может получить доступ к va сифилисе, как NumPy массив:

>>> df.ix['row3'].values 
array([12, 1, 14]) 

или имя строки:

>>> df.ix['row3'].name 
'row3' 

и столбца в row2, где значение равно 3 с:

r2 = df.ix['row2'] 
r2[r2.eq(3)].index 

Это дает вы a Index объект:

Index(['column2'], dtype='object') 

Вы можете получить доступ отдельных элементов тоже:

>>> r2[r2.eq(3)].index[0] 
'column2' 
+0

'df.ix [ 'row3'] '-> Как я могу найти' column' (его имя), которое имеет значение, скажем, '12' ? –

+0

Решение находится во второй части моего ответа: 'r3 = df.ix ['row3']' than 'r3 [r3.eq (12)]. Index' для всех имен столбцов или' r3 [r3.eq (12)]. Index [0] 'для первого, если он существует. –

1

Вот фрагмент кода, который я мог бы получить. Не уверен, что это лучший способ сделать это.

>>> import pandas as pd 
>>> df = pd.DataFrame({'AAA' : [4,5,6,7], 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]}) 
>>> df 
    AAA BBB CCC<br> 
0 4 10 100<br> 
1 5 20 50<br> 
2 6 30 -30<br> 
3 7 40 -50<br> 
>>> df.iloc[0] 
AAA  4 
BBB  10 
CCC 100 
Name: 0, dtype: int64 
>>> df.iloc[0].AAA 
4 

Надеюсь, это то, что вы искали.

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