簡體   English   中英

將一行從 dataframe 插入到另一個 dataframe 列重疊的地方

[英]Inserting a row from dataframe to another dataframe where columns overlap

df1 = pd.DataFrame(columns = ['name','address','age','hobby'], index = ['num1','num2','num3'])
df2 = pd.DataFrame(columns = ['name','age'])
df2['name'] = ['David']
df2['age'] = [20]

# output should yield the same result as below
df1.iloc[0,:] = ['David', np.nan, 20, np.nan]

我想將 df2 的第一行插入 df1 的第一行,以便不重疊的列具有 NaN 值。 我可以在不使用 for 循環或單獨分配值的情況下執行此操作嗎? 我希望將它們全部分配給需要最少的計算時間。 謝謝你。

IIUC,你可以嘗試這樣的事情:

df2.rename({0:'num1'}).combine_first(df1)

Output:

      address   age  hobby   name
num1      NaN  20.0    NaN  David
num2      NaN   NaN    NaN    NaN
num3      NaN   NaN    NaN    NaN

最后添加重新索引。

df2.rename({0:'num1'}).combine_first(df1).reindex(df1.columns, axis=1)

Output:

       name  address   age  hobby
num1  David      NaN  20.0    NaN
num2    NaN      NaN   NaN    NaN
num3    NaN      NaN   NaN    NaN

您還可以使用iloc定義它:

df1.iloc[0,[0,2]] = df2.values

Output:

       name address  age hobby
num1  David     NaN   20   NaN
num2    NaN     NaN  NaN   NaN
num3    NaN     NaN  NaN   NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM