2017-10-23 9 views
0

私は50x50データフレームを1で埋めました。私は溶融関数を使用して最初の列がインデックス値を表す長いデータフレームを作成しました。元の50×50行列からインデックス値を使用してPythonで新しい列を作成

X Y value 
0 0 0 1.0 
1 1 0 1.0 
2 2 0 1.0 
3 3 0 1.0 
... ... ... ... 
29 29 0 1.0 
... ... ... ... 
2470 20 49 1.0 
2471 21 49 1.0 
2472 22 49 1.0 
... ... ... ... 
2498 48 49 1.0 
2499 49 49 1.0 

、Iは、x = 0かつy = 0(xは私の列とY私の行であることである)で開始し、位置を上に移動し、私は、x = 0でいた場合、 y = 49。私が試みた

X Y value index_value 
0 0 0 1.0  2450 

:溶融したデータフレームから、X = 0、Y = 49が私が持っているように、私は、対応するインデックス番号が表される新しい列を作成するインデックス番号2450に関連付けられ

df["index_value"] = df.loc[df['X'], df['Y']] = '((Y-1)*50 + X)' 

しかし、私はこのエラーを取得する:

KeyError: '[0 0 0 ..., 49 49 49] not in index' 

私はGROUPBY機能を使用することができるかもしれませんが、他の助けをいただければ幸いです!

+1

? – BenT

+0

x、yの値に関連付けられたインデックスにパターンがあることがわかりました。インデックスを表す関数を作成してからその値をシフトしようとしましたが、どこから始めるべきかはわかりませんが、続行します。 – bazinga

答えて

0

前述のとおり、「index_value」列の値は、元の50x50 DataFrameのエントリのインデックスに依存する必要があります。関係は((Y-1)* 50 + X)

新しいDataFrameのインデックスも50x50 DataFrameのインデックスに依存します。関係は((Y)* 50 + X)

必要な値を持つ新しい列は、溶けたDataFrameのインデックスを50行分シフトすることで作成できます。だから、

reset_index()は50行あなたがDFを使用することができます

>>>df['index']=np.roll(df['index'],50) 
+0

これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューの投稿](/レビュー/低品質の投稿/ 17704333) –

+0

これは質問に対する回答ではありません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューの投稿](/ review/low-quality-posts/17704996) – Tom

0

で数字をシフトnp.rollデータフレーム

>>>df=df.reset_index() 

の指標である新規の列インデックスを追加します。 reset_index()メソッド。これは、「インデックス」と呼ばれる新しい列をインデックスをリセットして作成されます

例:あなたがこれまでに試してみました何

df = df.reset_index(drop=False) 
+0

indexという名前の新しい列を作成したくありません。作成したい新しい列は、新しい位置に基づいてインデックス値を反映する必要があります。 – bazinga

関連する問題