python
1import pandas as pd 2df = pd.DataFrame() 3df["column"] = [["a", "c", "e"], ["b"], ["c", "e"], ["a", "e"], ["a", "b", "c"]] 4df.head() 5 6>> column 70 [a, c, e] 81 [b] 92 [c, e] 103 [a, e] 114 [a, b, c]
のようなデータフレームがあるとします。
<やりたいこと>
columnの取りうる値全てに対して、それぞれ各行に対してバイナリーの変数に変換したいです。
つまり
|a|b|c|d|e|
|:--:|:--:|--:|
|1|0|1|0|1|
|0|1|0|0|0|
|0|0|1|0|1|
|1|0|0|0|1|
|1|1|1|0|0|
を得たいです。
<試したこと>
uniqは取りうる値を格納しています。
python
1for col in uniq: 2 df[col] = 0 3 4 for i in range(len(df)): 5 if col in df.loc[i, "column"]: 6 df.loc[i, col] = 1 7 else: 8 df.loc[i, col] = 0 9
<解決したいこと>
実際に扱っているデータフレームは三万行くらいで、取りうる値は10個くらいであり、
かなり遅いです。
実際にはこの操作を複数回行う必要があり、上の操作を高速化する必要があります。
お力添えいただけないでしょうか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/28 07:17
2019/09/28 08:17
2019/09/28 08:36