2017-02-06 7 views
3

は、私は(ない100%完全な)次のPythonコードを持っている:forループのPandas列の値を追加しますか?

labels = [] 
for i in range(0, len(test)): 
    name = test.iloc[i]['name'] 
    s = name.split('.') 
    label_name = s[0] 
    label = label_names.index(label_name) 
    id = int(s[1]) 
    labels.append(label) 
test['label'] = labels 

最後の文が生成さ「の値がデータフレームからのスライスのコピーに設定されてしようとしています。」警告。

データフレームに新しいラベル「ラベル」を作成するより良い方法はありますか?

+0

'test [" label "] = test [" name "] apply(fun)'ここで 'fun(name)'は 'name'をとり戻り値を返す関数です「ラベル」。 – DyZ

+0

あなたのコードが間違っていることを意味するわけではなく、唯一の警告です。未来のある時点で、あなたが単にコメントを書いておきたいのであれば、私はコメントしています)あなたはパンダをインポートした後、単に "pd.options.mode.chained_assignment = None"と打つことができます。 – Gabriel

答えて

0
def my_function(input): 
    name = input 
    s = name.split('.') 
    label_name = s[0] 
    label = label_names.index(label_name) 
    id = int(s[1]) 

    return label 

test['label'] = test['name'].apply(lambda x: my_function(x)) 
関連する問題