2016-11-14 10 views
0

だから、私はPythonにはかなり新しく、これは初めてのスタックオーバーフローポストです。pandasデータフレームの文字列式からダミー列を作成する方法は?

私はポーカーハンドのアクションを文字で省略したデータフレームの列を持っています。私は私のデータフレームに新しい列を作成したい

pdb_RED.PRFLOP_A.unique() 
array(['BrA', 'Brf', 'Bk', 'f', 'Bc', 'r', 'Bf', 'c', 'B', 'Br', 'cc', 
    'Bcf', 'Bcc', 'BcrA', 'Brc', 'BQ', 'Brr', 'rf', 'rc', 'BrQ', 'BcA', 
    'cr', 'cf', 'Q', 'fQ', 'BKQ', 'rr', 'BrcA', 'rrc', 'Bcr', 'BcQ', 
    'BA', 'rQ', 'BfQ', 'rA', 'KQ', 'rrA'], dtype=object) 

、それは式が列に一致した場合、1のためのダミー変数が含まれており、他のすべてのための0。式:

A1_agro=pdb_RED['PRFLOP_A'].str.contains('[bBrA]$', regex=True) 

True/False値のタプルを返します。 (Trueの場合は1、Falseの場合は0) 私の元のデータフレームに空の列を作成し、後で私の限られた知識で試してみる。 'タプル'オブジェクトがアイテム割り当てのエラーをサポートしていないため、誰かが私の指示を与えることができることを願っています。

pdb_RED['PRFLOP_agro']=np.nan 
for row in pdb_RED.iterrows(): 
    if A1_agro[1]==True: 
     row['PRFLOP_agro']=1 
    else: 
     row['PRFLOP_agro']=0 

答えて

0

私はしかし実際に行を反復処理する必要があってはならない、あなたのループが

for i, row in pdb_RED.iterrows(): 

に変更した場合、あなたのコードが動作すると思います、あなたは、元のデータフレームに直接あなたの新しい列を割り当てることができます:

pdb_RED['A1_agro'] = pdb_RED['PRFLOP_A'].str.contains('[bBrA]$', regex=True) 

あなたがむしろブール以外の整数をしたい場合は、最後に.astype(int)を追加することができます。

+0

ありがとう、一行の解決策は完全に仕事をします。 –

関連する問題