![](/img/trans.png)
[英]how to compare a column in first dataframe with a column in second dataframe, and extract values from another column in second dataframe upon matching
[英]How to compare one column value available or not in another column dataframe and extract another column of second dataframe if present
我有兩個如下數據框-
df1_data = {'id' :{0:'101',1:'102',2:'103',3:'104',4:'105'},
'sym1' :{0:'abc',1:'pqr',2:'xyz',3:'mno',4:'lmn'},
'a name' :{0:'a',1:'b',2:'c',3:'d',4:'e'}}
df1 = pd.DataFrame(df1_data)
print df1
df2_data = {'sym2' :{0:'abc',1:'xxx',2:'xyz'},
'a name' :{0:'k',1:'e',2:'t'}}
df2 = pd.DataFrame(df2_data)
print df2
我想檢查在df2的sym2列中存在的df1中是否可用的sym1,如果存在,我要提取該行的名稱並將其添加到df1中作為新列new_col 。
為此,我嘗試了下面的代碼片段,它也可以工作,但是對於我的長數據框來說,它卻無法工作。 我正面臨以下錯誤和警告消息-
pandas.core.indexing.IndexingError: Unalignable boolean Series key provided
UserWarning: Boolean Series key will be reindexed to match DataFrame index.
代碼段-
df1['root'] = df2[df1['sym1'].isin(df2.sym2)]['a name']
print df1
我如何才能從df2中獲取這些名稱列,並在df1中為特定行創建new_col?
您所描述的是典型的合並操作。 在您的特定情況下,您有兩個不同的數據框,它們共享一個標識符列(sym1和sym2),它們將屬於在一起的對應行(或標識)對齊。 您需要做的就是合並這些標識符列:
>>> to_merge = df2.rename(columns={"a name": "new_col"}) # rename to desired column name
>>> df_merged = pd.merge(df1, to_merge, how="left", left_on="sym1", right_on="sym2")
>>> print(df_merged)
a name id sym1 new_col sym2
0 a 101 abc k abc
1 b 102 pqr NaN NaN
2 c 103 xyz t xyz
3 d 104 mno NaN NaN
4 e 105 lmn NaN NaN
看到熊貓的更多信息,文檔合並在這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.