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