簡體   English   中英

如何檢查兩個 pandas 數據幀是否具有相同的值並將這些行連接起來?

[英]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)

為了獲得更多控制並避免可能因在其他地方更新df1df2而導致的任何錯誤,您可能需要拆開這個單行。

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.

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