我有一个包含3列的数据框df。
_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个等级的层次结构,在这种情况下它不起作用
答案 0 :(得分:1)
这是你在说什么吗?
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