Python 如何通过CategoricalIndex对象合并两个数据帧
假设一个数据帧x: 这看起来像:Python 如何通过CategoricalIndex对象合并两个数据帧,python,merge,Python,Merge,假设一个数据帧x: 这看起来像: A B A_level 10 NaN 2 NaN 11 NaN 4 NaN 12 3 3 (0, 3] 13 4 5 (3, 6] 14 5 1 (3, 6] 15 6 6 (3, 6] 16 7 9 (6, 15] 17 8 0 (6, 15] 18 9 4 (6, 15] 19 10 4 (6, 15] B A_level
A B A_level
10 NaN 2 NaN
11 NaN 4 NaN
12 3 3 (0, 3]
13 4 5 (3, 6]
14 5 1 (3, 6]
15 6 6 (3, 6]
16 7 9 (6, 15]
17 8 0 (6, 15]
18 9 4 (6, 15]
19 10 4 (6, 15]
B
A_level
(0, 3] 3.00
(3, 6] 4.00
(6, 15] 4.25
然后,总结系列y的内容如下:
这看起来像:
A B A_level
10 NaN 2 NaN
11 NaN 4 NaN
12 3 3 (0, 3]
13 4 5 (3, 6]
14 5 1 (3, 6]
15 6 6 (3, 6]
16 7 9 (6, 15]
17 8 0 (6, 15]
18 9 4 (6, 15]
19 10 4 (6, 15]
B
A_level
(0, 3] 3.00
(3, 6] 4.00
(6, 15] 4.25
我的问题是如何合并x和y并得到以下结果
A B A_level B_mean
10 NaN 2 NaN NaN
11 NaN 4 NaN NaN
12 3 3 (0, 3] 3.00
13 4 5 (3, 6] 4.00
14 5 1 (3, 6] 4.00
15 6 6 (3, 6] 4.00
16 7 9 (6, 15] 4.25
17 8 0 (6, 15] 4.25
18 9 4 (6, 15] 4.25
19 10 4 (6, 15] 4.25
我试过了
x['B_mean'] = y[x['A_level']]
但它返回keyrerror
下面的代码可以做类似的工作
z = pd.merge(x,y.reset_index(),how='left',on='A_level')
返回:
A B A_level B_mean
0 NaN 2 NaN NaN
1 NaN 4 NaN NaN
2 3 3 (0, 3] 3.00
3 4 5 (3, 6] 4.00
4 5 1 (3, 6] 4.00
5 6 6 (3, 6] 4.00
6 7 9 (6, 15] 4.25
7 8 0 (6, 15] 4.25
8 9 4 (6, 15] 4.25
9 10 4 (6, 15] 4.25
但是x和z的指数是不同的。我知道这是可以做到的
z.index = x.index
但我很好奇是否有更好的方法
提前多谢 您可以这样做,但它与您的解决方案几乎相同:
z = pd.merge(x,y.reset_index(),how='left',on='A_level').set_index(x.index)
可能是重复的谢谢安东。但是我仍然很好奇是否有像我第一次尝试的那样的解决方案x['B_-mean']=y[x['a_-level']].x['a_-level']有更多的指标可以包含在y中,所以我想这就是为什么你不能用索引访问y数据帧的原因:在[40]:y[x['a_-level']]keyrerror:[nan nan'0,3]'3,6]'3,6]'6,15]'6,15]\n'6,15]']不在索引中