在Pandas中如何高效地将不同结构的DataFrame整列复制?

在Pandas中如何高效地将不同结构的DataFrame整列复制?

pandas高效DataFrame列复制技巧

在数据处理中,常需将一个DataFrame的列复制到另一个结构不同的DataFrame中。本文介绍一种高效的Pandas整列复制方法,避免逐单元格复制的低效。

假设有两个结构不同的DataFrame,df1和df2,目标是将df2的某列复制到df1的对应列。

以下代码示例演示如何将df2的列数据复制到df1:

import pandas as pd  # 示例DataFrame df1 df1 = pd.DataFrame({     'A': range(4),     'B': range(4),     'C': range(4),     'D': range(4) })  # 示例DataFrame df2 df2 = pd.DataFrame({     'D': [11, 22, 33],     'E': ['aa', 'bb', 'cc'] })  # 方法一:利用`loc`进行高效赋值 (推荐) df1['A'] = df2['D'].reset_index(drop=True)[:df1.shape[0]] df1['B'] = df2['E'].reset_index(drop=True)[:df1.shape[0]]  # 方法二:使用`concat`和`reindex` (原方法改进) new_A = pd.concat([df1['A'], df2['D']], ignore_index=True) df1 = df1.reindex(range(len(new_A))) df1['A'] = new_A[:df1.shape[0]]  # 打印结果 print(df1)

方法一:使用loc进行高效赋值

此方法直接使用loc进行赋值,效率更高,并且更简洁易懂。reset_index(drop=True)重置索引,[:df1.shape[0]]确保复制的长度与df1匹配,避免索引错位。

方法二:改进后的concat和reindex方法

此方法对原代码进行了改进,使其更清晰、更易于理解和维护。 它避免了不必要的行数扩展,只在需要时才进行reindex操作。

两种方法都能高效地将df2的列复制到df1,选择哪种方法取决于个人偏好和代码风格。 但loc方法通常被认为更简洁高效。 记住,在处理大型数据集时,高效的列复制方法至关重要。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享