выбор строк по значениям в DataFrame - PullRequest
0 голосов
/ 02 апреля 2020

A post дает возможность выбирать строки по значению столбца

Вот DataFrame

            0           1
0  877.443401  808.520962
1  826.300620  848.761594
2  824.403359  861.395174
3  866.732033  804.494156
4  853.461260  874.307851
5  822.906499  830.102249
6  852.605652  863.602725
7  893.421600  825.032893
8  863.768363  862.298227
9  899.976622  864.111539

с этим кодом df[df.columns[[1]]]>850, я получил

    1
0   False
1   False
2   True
3   False
4   True
5   False
6   True
7   False
8   True
9   True

когда я запускаю этот df.loc[(df[df.columns[[1]]]>850)], я получаю ошибку

ValueError                                Traceback (most recent call last)
<ipython-input-36-8a159ef0cec2> in <module>()
----> 1 df.loc[(df[df.columns[[1]]]>850)]

этот код df[df[df.columns[[1]]]>850] дает

    0   1
0   NaN NaN
1   NaN NaN
2   NaN 861.395174
3   NaN NaN
4   NaN 874.307851
5   NaN NaN
6   NaN 863.602725
7   NaN NaN
8   NaN 862.298227
9   NaN 864.111539

Это близко, что я пытаюсь чтобы получить это новый DataFrame состоит из строк в [2,4,6,8,9].

Как это сделать? Спасибо всем, кто вдохновляет.

Ответы [ 2 ]

3 голосов
/ 02 апреля 2020

df['a'] возвращает pd.Series, а df[['a']] возвращает pd.DataFrame с единственным столбцом, являющимся 'a'. Для вашей проблемы:

Использование loc

new_df = df.loc[df[1] > 850].copy()

Использование query

new_df = df.query('a > 850')

Обычно используется str имена столбцов вместо int. Например, метод query не будет работать с int именами столбцов, и есть множество странных поведений, с которыми вы можете столкнуться с int именами столбцов.

1 голос
/ 02 апреля 2020

Вы можете попробовать это -

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