Фильтрация панд данных в родительском дочернем состоянии - PullRequest
0 голосов
/ 16 мая 2019

У меня есть Dataframe df, имеющий 3 столбца.

    _id  parent_id  type
    A    B          Subcategory_level
    B    null       Main_Level
    D    A          Product_Level
    M    N          Product_Level
    X    Y          Subcategory_Level
    Z    X          Subcategory_Level
    L    Z          Product_Level

Что я хочу получить, так это мой вывод:

    _id  parent_id  type
    D    A          product_level
    M    N          product_level
    L    X          product_level

То, что я пробовал, - удалить все строки, имеющие типравно main_level.Тогда

    df1=df
    df1.rename(columns= {'_id':'parent_id','parent_id':'_id'}, 
 index=str,inplace=True)

Затем Естественное объединение df1 с df:

    final_df=pd.merge(df,df1,on='parent_id', how='inner')

Но проблема в этом естественном объединении, если есть более одного уровня типа, это не будет работать,Например, отношения между X и L имеют 2 уровня иерархии, в этом случае они не работают

1 Ответ

1 голос
/ 16 мая 2019

Это то, что вы говорите?

df[df.type == 'product_level']

_id  parent_id  type
D    A          product_level
M    N          product_level
L    X          product_level

# Maybe I don't understand what you mean. I thought it was. 

In [2]: df = pd.DataFrame({"a":[1,2,3,4], "b":["x","t","s","g"], "x":["l1", "l3", "l1", "l2"]})

In [3]: df
Out[3]:
   a  b   x
0  1  x  l1
1  2  t  l3
2  3  s  l1
3  4  g  l2

In [4]: df[df.x=="l1"]
Out[4]:
   a  b   x
0  1  x  l1
2  3  s  l1

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