DataFrame среза панды по строке
Я работаю с данными опроса, загруженными из файла h5 как hdf = pandas.HDFStore('Survey.h5')
через пакет панд. В этом DataFrame
Все строки - это результаты одного опроса, а столбцы - ответы на все вопросы в рамках одного опроса.
Я стремлюсь уменьшить этот набор данных до меньшего DataFrame
включая только строки с определенным изображенным ответом на определенный вопрос, то есть со всем одинаковым значением в этом столбце. Я могу определить значения индекса всех строк с этим условием, но я не могу найти, как удалить эти строки или сделать новый df только с этими строками.
4 ответа
In [36]: df
Out[36]:
A B C D
a 0 2 6 0
b 6 1 5 2
c 0 2 6 0
d 9 3 2 2
In [37]: rows
Out[37]: ['a', 'c']
In [38]: df.drop(rows)
Out[38]:
A B C D
b 6 1 5 2
d 9 3 2 2
In [39]: df[~((df.A == 0) & (df.B == 2) & (df.C == 6) & (df.D == 0))]
Out[39]:
A B C D
b 6 1 5 2
d 9 3 2 2
In [40]: df.ix[rows]
Out[40]:
A B C D
a 0 2 6 0
c 0 2 6 0
In [41]: df[((df.A == 0) & (df.B == 2) & (df.C == 6) & (df.D == 0))]
Out[41]:
A B C D
a 0 2 6 0
c 0 2 6 0
Если вы уже знаете индекс, который вы можете использовать .loc
:
In [12]: df = pd.DataFrame({"a": [1,2,3,4,5], "b": [4,5,6,7,8]})
In [13]: df
Out[13]:
a b
0 1 4
1 2 5
2 3 6
3 4 7
4 5 8
In [14]: df.loc[[0,2,4]]
Out[14]:
a b
0 1 4
2 3 6
4 5 8
In [15]: df.loc[1:3]
Out[15]:
a b
1 2 5
2 3 6
3 4 7
Использоватьquery
для поиска конкретных условий:
In [3]: df
Out[3]:
age family name
0 1 A john
1 36 A jason
2 32 A jane
3 26 B jack
4 30 B james
In [4]: df.query('age > 30 & family == "A"')
Out[4]:
age family name
1 36 A jason
2 32 A jane
Если вам просто нужно получить
top
ряды; вы можете использовать
df.head(10)