还不是代码效率方面的专家(到目前为止)和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构造)。
答案 0 :(得分:0)
这样做应该更有效:
data = df1.join([df2, df3, df4, df5], how='inner')
这将一次合并所有数据帧。它还将排除在所有数据帧中没有值的任何行(因此不需要dropna()
)。 how
的默认值为'left'
,它将为调用数据帧中的每一行产生一行,并用NaN
填充所有丢失的值。但是,如果在连接之前任何数据框中都包含NaN
值,那么您仍将需要使用dropna()
。
如果您不想使用数据框索引,还可以使用on=...
选择连接数据框的列。