我有两个环境:
环境#1:
- Python 3.7.5
- 熊猫0.23.4
环境#2:
- Python 3.8.10
- 熊猫1.3.4
我在两个版本中都有相同的代码,没有对其进行任何修改。然而,我有一行特定的代码,它似乎导致了问题/产生了不同的输出:
df_result = pd.merge(df_l, df_r, left_on=left_on, right_on=right_on, how='inner', suffixes=suffixes)
CCD_ 2和CCD_。我在调试器中检查了这两个版本,它们完全相同,所以应该没问题。此外,left_on
、right_on
和suffixes
变量在两种环境中都具有完全相同的值(也通过调试器进行检查(。
然而,当df_result
由merge
函数生成时,在环境#1(旧Python,旧Pandas(中,它会生成一个具有16170行的DataFrame。在环境#2(新Python,新Pandas(中,它生成一个只有8249行的DataFrame。列的数量是相同的,区别只是行的数量。
是什么导致了这种行为?
我如何确保环境#2(新Python,新Pandas(产生的16170行输出与环境#1(旧Python,旧Pan达斯(产生的输出完全相同?
谢谢。
最后,这个问题属于新Pandas处理NaN
值的方法。而在旧的Pandas中,代码将NaN
值更改为<NA>
(作为字符串(,而在新的Panda中,代码仅将其保留为nan
(pd.nan
类型(。
我确保做了df.fillna('<NA>', inplace=True)
,效果很好。生成的DataFrame现在具有与旧Pandas生成的行数相同的行数。