使用链式“ join”而不是merge或concat来连接多个数据框是否有效?

时间:2018-10-05 08:11:22

标签: python pandas join merge concat

还不是代码效率方面的专家(到目前为止)和pythonic代码编写方面的专家(到目前为止),我想问一下这里的专家是否以下代码最适合具有相同日期索引的join数据帧,或者使用merge或concat可能更好:

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

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

NB:此数据集中出现NaN的原因是因为我创建的数据帧实际上是其他数据帧的移位版本(使用.shift(n)),这意味着NaN s爬到移位的数据帧的开头。

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

1 个答案:

答案 0 :(得分:0)

这样做应该更有效:

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

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

如果您不想使用数据框索引,还可以使用on=...选择连接数据框的列。