2017-06-08 9 views
1

から条件に基づいて、列の作成:私はすべてのdf1['userDomain']ためdf2['Wave Date']から日付とwave_date呼ばdf1に列を追加したいと思いPythonの:次のように私は2つのデータフレームを持っている他のデータフレーム

df1= 
    date    company  userDomain keyword pageViews category 
    2015-12-02 1-800 Contacts  glasses.com  SAN   2 STORAGE 
    2015-12-02 1-800 Contacts  rhgi.com  SAN   3 STORAGE 
    2015-12-02 100 Percent Fun dialogdesign.ca  SAN   1 STORAGE 
    2015-12-02  101netlink 101netlink.com  SAN   8 STORAGE 
    2015-12-02    1020  nlc.bc.ca  SAN   4 STORAGE 

df2= 
         Outcome      Job Title Wave 
      Created Opportunity     IT Manager 1.0 
    Closed Out Prospect/Contact  Infrastructure Manager 1.0 
          NaN     IT Director 1.0 
          NaN Supervisor Technical Support 1.0 
      Created Opportunity  Director of IT Services 1.0 

      Wave Date  userDomain 
2016-02-16 15:07:05 dialogdesign.ca 
2016-02-16 15:07:05   rhgi.com 
2016-02-16 15:07:05  surefire.com 
2016-02-16 15:07:05  isd2144.org 
2016-02-16 15:07:05  nlc.bc.ca 

がありますdf2['userDomain'] userDomainが両方のフレームに一致しない場合は、値はnanである必要があります。申し訳ありませんが、これは非常に素朴な質問ですが、私は失敗に失望しています。

df1['wave_date'] = df1.apply(lambda x: df2['Wave Date'] if x['userDomain'].isin(df2['userDomain']) else np.nan) 

私は

IndexError: ('userDomain', 'occurred at index date') Can you please point out the correct to do it? Thanks a lot

答えて

1
m = dict(zip(df2['userDomain'], df2['Wave Date'])) 
df1.assign(wave_date=df1.userDomain.map(m)) 

     date   company  userDomain keyword pageViews category   wave_date 
0 2015-12-02 1-800 Contacts  glasses.com  SAN   2 STORAGE     NaN 
1 2015-12-02 1-800 Contacts   rhgi.com  SAN   3 STORAGE 2016-02-16 15:07:05 
2 2015-12-02 100 Percent Fun dialogdesign.ca  SAN   1 STORAGE 2016-02-16 15:07:05 
3 2015-12-02  101netlink 101netlink.com  SAN   8 STORAGE     NaN 
4 2015-12-02    1020  nlc.bc.ca  SAN   4 STORAGE 2016-02-16 15:07:05 
+0

どうもありがとう、@piRSquaredを得続ける:私は何をやっていることは、このようなものです。それは素晴らしいです。 –

+0

@KrishnangKDalalようこそ。 – piRSquared

関連する問題