Есть ли способ отфильтровать фрейм данных на основе значений в столбце x, которые произошли ранее? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь отфильтровать основанный на данных фрейм, чтобы сохранить всю строку, если ее значение в столбце X ранее не встречалось.Если это произошло раньше, мне нужно сравнить значение в столбце Y со значением в столбце Y в первой строке.

пример:

MM     Bid Sz      Bid      

BP1     15       73.20
TWD1    15       73.15
SPAC    250      71.00
BCOM1   500      71.00
BP2     500      71.00
TWD2    500      71.00
BP3     250      71.00
MC1     500      71.00
MC2     275      70.25
TWD3    275      70.10
MC3     150      68.00

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Используйте df.drop_duplicates.В вашем примере, если вы хотите удалить строки, которые имеют значение Bid, которое было засвидетельствовано в предыдущей строке, вы бы вызвали <your_dataframe>.drop_duplicates(subset="Bid").Здесь аргумент ключевого слова keep имеет значение по умолчанию "first", которое является желаемым поведением, поэтому нет необходимости его устанавливать.

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html

0 голосов
/ 17 апреля 2019

Мне может понадобиться больше информации для решения вашей проблемы, но, надеюсь, это поможет вам.

Здесь я сделал фрейм данных:

import pandas as pd
import numpy as np

df = pd.DataFrame(data={'X': [1,1,2,3,4,5], 'Y':['kept', 'dropped', 2, 3, 4, 5]}); df

что выглядит так ...

X   Y
1   kept
1   dropped
2   2
3   3
4   4
5   5

Затем я отбросил неуникальные значения в df['X'] и kept появление 'first' значения:

df = df.drop_duplicates(subset=['X'], keep='first');df

Итак, мой df выглядит так:

X   Y
1   kept
2   2
3   3
4   4
5   5

Используя drop_duplicates, вы можете гарантировать, что только уникальные значения в строке сохраняются как минимум до некоторой логической степени. Однако вы можете также рассмотреть возможность циклического перемещения по фрейму данных с помощью iterrows, чтобы проверить уникальные значения и одновременно выполнить сравнение. Это очень помогло бы с эффективностью.

В конце концов, если это не то, что вы ищете, пожалуйста, дайте мне знать и / или предоставьте больше информации. Я буду рад помочь!

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