假设我有一个多索引数据框df1:
x y
i0 i1
aaa a 1 6
b 2 5
c 3 4
bbb x 4 3
y 5 2
z 6 1
使用第二个数据框df2:
foo bar cat
0 0.925481 0.682102 aaa
1 0.620557 0.375114 aaa
2 0.788425 0.746436 bbb
3 0.247594 0.902258 aaa
4 0.146786 0.048585 bbb
5 0.256904 0.327165 bbb
我想使用第一个数据帧的二级索引列表将第二个数据帧中的列填充df2为数组,如下所示:
foo bar cat catlist
0 0.925481 0.682102 aaa ['a','b','c']
1 0.620557 0.375114 aaa ['a','b','c']
2 0.788425 0.746436 bbb ['x','y','z']
3 0.247594 0.902258 aaa ['a','b','c']
4 0.146786 0.048585 bbb ['x','y','z']
5 0.256904 0.327165 bbb ['x','y','z']
我可以通过迭代(缓慢地)来做到这一点,但是应该如何使用矢量化 pandas 方法来完成此操作?
迭代使用apply:
def iterate(row):
return list(df1.loc[row['cat']].index.get_level_values(0))
df2['catlist'] = df2.apply(iterate, axis=1)
慕盖茨4494581
相关分类