2016-06-18 4 views
1

私は以下のデータフレームを持っています。python pandasの2つの列値を使用してURL列データフレームを作成する方法は?

company,compid,secid 
a,a1,a2 
b,b1,b2 

私はフォーマットのURL欄に列の値を追加する方法を

company,compid,secid,url 
a,a1,a2,http://www.cssss.com/companydetails.aspx?compid=a1&secid=a2 
b,b1,b2,http://www.cssss.com/companydetails.aspx?compid=b1&secid=b2 

を、次のような出力が必要ですか?

答えて

2

用途:

df['url'] = 'http://www.cssss.com/companydetails.aspx?compid=' + 
      df.compid + '&secid=' + df.secid 
print (df) 
    company compid secid            url 
0  a  a1 a2 http://www.cssss.com/companydetails.aspx?compi... 
1  b  b1 b2 http://www.cssss.com/companydetails.aspx?compi... 

私はテストのためurlを変更:

df['url'] = 'http:aaa.aspx?compid=' + df.compid + '&secid=' + df.secid 
print (df) 
    company compid secid        url 
0  a  a1 a2 http:aaa.aspx?compid=a1&secid=a2 
1  b  b1 b2 http:aaa.aspx?compid=b1&secid=b2 

compidseciddtypesastypeによってstrにキャスト、intの場合:

df['url'] = 'http:aaa.aspx?compid='+df.compid.astype(str)+'&secid='+df.secid.astype(str) 
print (df) 
    company compid secid        url 
0  a  a1 a2 http:aaa.aspx?compid=a1&secid=a2 
1  b  b1 b2 http:aaa.aspx?compid=b1&secid=b2 
#code before 
data3 = pd.merge(df1,df2,on='company', how='outer') 

print (data3) 
    company compid secid 
0  a  a1 a2 
1  b  b1 b2 
2  a  a1 NaN 
3  b NaN NaN 

data3.loc[~data3[['compid','secid']].isnull().any(1), 'url'] = 
'http:aaa.aspx?compid=' + data3.compid.astype(str) + '&secid=' + data3.secid.astype(str) 

data3.fillna('', inplace=True) 
print (data3) 

    company compid secid        url 
0  a  a1 a2 http:aaa.aspx?compid=a1&secid=a2 
1  b  b1 b2 http:aaa.aspx?compid=b1&secid=b2 
2  a  a1           
3  b            
:列 compidsecidanyは、それが空の文字列を指定でき NaN含まれている場合

:コメントによってEDIT

関連する問題