2016-04-13 21 views
0

12 sütunlu pandalarda bir veri karegim var. Bir sütun, os, tarayıcı ve .... gibi bilgileri ayıklamak ve bu değerlere dayanarak veri çerçevesine yeni sütunlar eklemek istediğim, kullanici dizesidir. Sütun platformu geçerli veri alanında mevcut değil ve ben onu eklemek istiyorum.Sözlük anahtarlarına göre pandalar veri çerçevesine sütunlar nasıl eklenir?

a b c  useragent 
1 3 5 "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" 

a b c  useragent    os  platform 
1 3 5  same as before   windows Null 

for i in range(len(df["useragent"])): 
    try : 
     df['platform'].iloc[i] = httpagentparser.detect(df["useragent"].iloc[i])['platform']['name'] 
    except : 
     continue 

Ben sütunları os ve ayrıştırıcı gelen değerlere dayalı dataframe için platformu eklemek istiyorum. Sorun, öncelikle denemeden sonraki ilk ödevdir. Atama bloğunu atayım çünkü ayrıştırıcıdan dönen dictinories her zaman aynı tuşlara sahip değildir. Örneğin, anahtar döndürme sözlüğünde anahtar os yoksa, bu dizin için yeni sütun os Null olmalıdır. Tüm süreci verimli bir şekilde nasıl yapabilirim?

+1

sen [Minimal Komple ve Doğrulanabilir örnek] ekleyebilir:

güvenle ile dataframe tüm satırlar için tek satırda yapabiliriz)? – jezrael

+0

Yardım için bir örnek – Kaggle

cevap

1

Çalışmıyor olmasının nedeni, bir DataFrame'den dilimin bir kopyasını ayarlayamamanızdır (bu uyarı try/except ile gizlenmiştir). http://stackoverflow.com/help/mcve (

df['platform'] = df.apply(
    lambda k: httpagentparser.detect(k['useragent']).get('platform', {}).get('name'), 
    axis=1 
) 
+0

Thx ekledim! Ben kredi vermek istedim ama hala izin verilmiyor gibi görünüyor :) – Kaggle

+0

hala [cevap kabul] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) baktığınız durum buydu :) – fernandezcuesta

+0

Üzgünüz, bilmiyorum! – Kaggle

İlgili konular