[英]How to check if two pandas dataframes have same values and concatenate those rows?
我得到了一個名為“df”的 DF,其中包含 4 個數字列 [frame,id,x,y] 我做了一個循環,創建了兩個數據幀,分別稱為 df1 和 df2。 df1 和 df2 都是原始 dataframe 的子集。
我想做的(我不明白該怎么做)是這樣的:我想檢查 df1 和 df2 在名為“id”的列中是否具有相同的值。 如果他們這樣做,我想將 df2 的那些行(具有相同的 id 值)連接到 df1。
例如:如果 df1 具有不同 id 值 (1,6,4,8) 的行,而 df2 具有此 id 值 (12,7,8,10)。 我想將 id 值 = 8 的 df2 行連接到 df1。 這就是我所需要的
這是我的代碼:
for i in range(0,max(df['frame']),30):
df1=df[df['frame'].between(i, i+30)]
df2=df[df['frame'].between(i-30, i)]
有幾種方法可以完成您的需要。 最簡單的方法是使用.isin()
獲取包含所需值的df2
切片,並將其與df1
連接在一行中。
df3 = pd.concat([df1, df2[df2.id.isin(df1.id)]], axis = 0)
為了獲得更多控制並避免可能因在其他地方更新df1
和df2
而導致的任何錯誤,您可能需要拆開這個單行。
look_for_vals = set(df1['id'].tolist())
# do some stuff
need_ix = df2[df2["id"].isin(look_for_vals )].index
# do more stuff
df3 = pd.concat([df1, df2.loc[need_ix,:]], axis=0)
您也可以使用df1['id'].unique()
而不是set()
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.