1
私はpandas 0.20.1とPython 3.6を使用しています。
最初に私の例を確認してください :各列は、いくつかの文字列を持っているforループとexec()を通して一連のマッピングを作成します。
up down
0 a high
1 a low
2 b low
3 c high
:
は、私はという名前のデータフレームを持っていると言います。私がしたいのは、これらの文字列を数字に変換し、データフレーム内の各列のマッピングを格納することです。ある :
up up_id
0 a 0
1 b 1
2 c 2
down down_id
0 high 0
1 low 1
:column_nameに私の例.IN + '_CODE'の形式でという名前の2つのデータフレームで up down
0 0 0
1 0 1
2 1 1
3 2 0
と保存マッピングは、彼らがup_codeとdown_codeです
私が試したことは:
cols = ['up', 'down']
for col in cols:
exec("%(k)s_code = pd.DataFrame({%(k)s:a[col].unique(), %(k)s_id:range(len(a[col].unique()))})" % {'k':col})
私はこのマッピングを保存するデータフレームを作成すると期待されるが、それは名前のエラーが発生した:
Traceback (most recent call last):
File "<ipython-input-81-7fc8a22fc7f1>", line 2, in <module>
exec("%(k)s_code = pd.DataFrame({%(k)s:a[col].unique(), %(k)s_id:range(len(a[col].unique()))})" % {'k':col})
File "<string>", line 1, in <module>
NameError: name 'up' is not defined
は、私はここで間違って何をしましたか?それともそれを実現するより簡単な方法がありますか?
シンプルでわかりやすい! Bharathありがとう! – Sean
ショーンを助ける喜び – Dark