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

2024-03-29 14:41:46 发布

您现在位置:Python中文网/ 问答频道 /正文

作为一名代码效率(yet)和最佳pythonic代码编写(yet)方面的专家,我想问一下这里的专家,以下代码是否是对具有公共日期索引的join数据帧最好的,或者merge或concat是否更好:

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

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

注意:之所以NaN出现在这个数据集中,是因为我创建了实际上是其他数据帧的移位版本的数据帧(使用.shift(n)),这意味着NaN在移位的数据帧的头部爬行。你知道吗

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


Tags: 数据代码datamergenanpythonicyet效率
1条回答
网友
1楼 · 发布于 2024-03-29 14:41:46

应该更有效地做到:

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

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

如果不想使用dataframes索引,还可以使用on=...来选择要加入dataframes的列。你知道吗

相关问题 更多 >