python - 为什么没有应用 pandas join-on-join 后缀

标签 python pandas

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

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 仅适用于重叠列。

关于python - 为什么没有应用 pandas join-on-join 后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60106034/

相关文章:

python - 使用 pandas 有条件地连接 python 中的数据框

python - to_sql 引发模糊 KeyError : <class 'numpy.float64' >

Python pandas 字符串处理来自 SQL 数据库的分类数据

python - 连接两个 Pandas 数据框并生成并排条形图?

python - __init__ 的可变范围

python - 减去列表中的当前项和上一项

python + Django : unable to find module with Popen

python - 如何忽略 SSL : CERTIFICATE_VERIFY_FAILED error?

python - 在 Python 中,如何使用不使用 YAML 标记的数据绑定(bind)来解析 YAML?

python - Pandas :前 N 行,每组前 N 行,相当于 ROW_NUMBER OVER(PARTITION BY ... ORDER BY ...)