为什么不应用熊猫加入后缀



如果我联接两个相同索引和列的数据帧,然后联接另一个,则第三个数据帧不会应用后缀:

In [2]: alpha = pd.DataFrame(np.random.rand(3,3), columns=['A', 'B', 'C'])                                                           
In [3]: beta = pd.DataFrame(np.random.rand(3,3), columns=['A', 'B', 'C'])                                                            
In [4]: gamma = pd.DataFrame(np.random.rand(3,3), columns=['A', 'B', 'C'])                                                           
In [5]: alpha                                                                                                                        
Out[5]: 
A         B         C
0  0.611635  0.488644  0.970255
1  0.005383  0.745394  0.441660
2  0.610877  0.025026  0.022215
In [6]: alpha.join(beta, lsuffix='alpha', rsuffix='beta').join(gamma, rsuffix='gamma')                                               
Out[6]: 
Aalpha    Balpha    Calpha     Abeta     Bbeta     Cbeta         A         B         C
0  0.611635  0.488644  0.970255  0.786817  0.083497  0.556911  0.994140  0.888822  0.615019
1  0.005383  0.745394  0.441660  0.089104  0.691462  0.310700  0.874293  0.694679  0.420962
2  0.610877  0.025026  0.022215  0.365142  0.289855  0.345496  0.492745  0.651312  0.355848
In [7]: gamma.join(alpha.join(beta, lsuffix='alpha', rsuffix='beta'), lsuffix='gamma')                                               
Out[7]: 
A         B         C    Aalpha    Balpha    Calpha     Abeta     Bbeta     Cbeta
0  0.994140  0.888822  0.615019  0.611635  0.488644  0.970255  0.786817  0.083497  0.556911
1  0.874293  0.694679  0.420962  0.005383  0.745394  0.441660  0.089104  0.691462  0.310700
2  0.492745  0.651312  0.355848  0.610877  0.025026  0.022215  0.365142  0.289855  0.345496

A、B 和 C 列应为 Agamma、Bgamma 和 Cgamma,但无论它们是联接的左侧还是右侧,都不会应用列标签。

凭直觉,我尝试在联接命令中向数据帧添加.copy()。 似乎没有任何变化有帮助:

In [8]: gamma.copy().join(alpha.copy().join(beta.copy(), lsuffix='alpha', rsuffix='beta'), lsuffix='gamma')                          
Out[8]: 
A         B         C    Aalpha    Balpha    Calpha     Abeta     Bbeta     Cbeta
0  0.994140  0.888822  0.615019  0.611635  0.488644  0.970255  0.786817  0.083497  0.556911
1  0.874293  0.694679  0.420962  0.005383  0.745394  0.441660  0.089104  0.691462  0.310700
2  0.492745  0.651312  0.355848  0.610877  0.025026  0.022215  0.365142  0.289855  0.345496

我做错了什么吗?

是的,我做错了什么。lsuffixrsuffix仅适用于重叠的列,如 doco 中所述。

最新更新