簡體   English   中英

如何比較另一列數據框中的一個可用列值是否可用以及如何提取第二個數據幀中的另一列(如果存在)

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

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