使用链接 "join" 而不是合并或连接来连接多个数据帧是否有效?

Is it efficient to join multiple dataframes using chained "join", rather than merge or concat?

不是代码效率(还)和最佳 pythonic 代码编写(还)方面的专家,我想问问这里的专家以下代码是否是具有共同点的 join 数据帧的最佳选择日期索引,或者如果合并或连接可能更好:

data = df1.join(df2).join(df3).join(df4).join(df5).dropna()

我在末尾使用 .dropna() 后缀来取消出现单个 NaN 的行。

注意:NaN 出现在这个数据集中的原因是因为我创建的数据帧实际上是其他数据帧的移位版本(使用 .shift(n) ),这意味着 NaNs 悄悄出现在移动数据帧的头部。

我打算在许多其他应用程序中使用此代码,所以想使用最好的方法(即不要不必要地使用内存,不要花费太多时间来处理,使用正确的 join/merg/concat 构造) .

这样做应该更有效率:

data = df1.join([df2, df3, df4, df5], how='inner')

这将一次性合并所有数据帧。它还将排除所有数据帧中没有值的任何行(因此不需要 dropna())。 how 的默认值是 'left',它为调用数据框中的每一行生成一行,用 NaN 填充任何缺失值。但是,如果任何数据帧在连接之前具有 NaN 值,那么您仍然需要使用 dropna().

如果您不想使用数据帧索引,也可以使用 on=... 选择要加入数据帧的列。