Удалить строки в Dataframe на основе условия в другом Dataframe - PullRequest
0 голосов
/ 25 января 2019

Я знаком с тем, как удалять строки в Dataframe на основе условия как:

df1 = df1.drop(df1[<some boolean condition>].index)

Пусть df1 и df2 равны по размеру DataFrames.Проблема состоит в том, чтобы удалить те же строки индекса в df2, которые удовлетворяют вышеупомянутому условию для df1.Я ищу элегантное решение вместо сохранения индексов и последующей итерации по ним для df2.

Пример:

         df1                
    index  value
    1        4
    2        5
    3        6
    4        3
    1        1
    2        5
    1        3
    2        3
    3        2
    4        2
    5        1
    6        7
    7        12

      df2   
 index  value
    1        4
    2        5
    3        7
    4        3
    1        1
    2        109
    1        44
    2        3
    3        2
    4        2
    5        1
    6        7
    7        12

Индексация не последовательная, поэтому простой df.drop выигралне работаетОн основан на группах, созданных ранее.

1 Ответ

0 голосов
/ 25 января 2019

Сначала вы должны исправить индексацию в ваших фреймах данных. То, что вы хотите сделать, не будет работать, если индексы не являются последовательными, так как вы удалите несколько строк, удалив по индексу. Вам следует избегать многих-многих отношений в аналитике данных - они просто вызывают больше проблем, чем решают ).

Попробуйте что-то вроде этого:

df1.reset_index()
df2.reset_index()
for indexes, row in df1.iterrows():
    if df1.columnname = 2: #imaginary value, place Boolean condition here
       df1.drop(df1.index[[indexes]])
       df2.drop(df2.index[[indexes]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...