2017-12-07 17 views
1
Column A   2C GAD D2 6F ABCDE 
2C 1B D2 6F ABC 1 0 1 1 0 
2C 1248 Bulers 1 0 0 0 0 

以上は作成するデータフレームです。Pythonデータフレーム:列名が別の列の文字列行に含まれている場合1その他0

最初の行はフィールド名を表します。 列名が「列A」行にある場合は1、それ以外の場合は0

Googleは私のような質問に答えるコードを探していますのでテストできますソリューションをバックアウトし、バックエンジニアリングします。残念ながら、私は何かを見つけることができませんでした。

そうしないと、私はこの問題を解決しようとしたコードを投稿しますが、文字通り手掛かりはありません。

答えて

0

あなたは、列と行に基づいて所望のデータを作成するために、リスト内包を使用することができます。

In [39]: row =['2C 1B D2 6F ABC', '2C 1248 Bulers'] 

In [40]: columns=['2C', 'GAD', 'D2', '6F', 'ABCDE'] 

In [41]: df = pd.DataFrame([[int(k in r) for k in columns] for r in row], index = ['2C 1B D2 6F ABC','2C 1248 Bulers'], columns=['2C', 'GAD', 'D2', '6F', 'ABCDE']) 

In [42]: df 
Out[42]: 
       2C GAD D2 6F ABCDE 
2C 1B D2 6F ABC 1 0 1 1  0 
2C 1248 Bulers 1 0 0 0  0 

あなたは純粋なパンダが接近したい場合は、その後、列と行を保存する代わりに、リストのpd.Series()を使用することができます欲望の結果を得るためにSeries.applySeries.str.containsを使用します。

In [73]: data = columns.apply(row.str.contains).astype(int).transpose() 

In [74]: df = pd.DataFrame(data.values, index = ['2C 1B D2 6F ABC','2C 1248 Bulers'], columns=['2C', 'GAD', 'D2', '6F', 'ABCDE']) 

In [75]: df 
Out[75]: 
       2C GAD D2 6F ABCDE 
2C 1B D2 6F ABC 1 0 1 1  0 
2C 1248 Bulers 1 0 0 0  0 
+0

謝罪を、私は質問を少し間違って尋ねた...私はすでに「列A」とのデータフレームを持っている...私は1と0の列を作成するにはどうすればよいです「列A」のオフ – PineNuts0

関連する問題