2017-06-19 15 views
0

これは基本的な疑問ですが、データフレームのリストをループし、データフレームごとにデータフレームの列の1つとしてインデックスを設定します。以下のコードの問題は、新しいインデックスでデータフレームを保存しないことです。このForループをフォーマットして、データフレームがforループの外部で永続的に変更されるようにするにはどうすればよいですか?ありがとう。Pandas Loopのデータフレームと変更インデックスのリスト

dflist = [df_1, df_2, df_3] 

for i in dflist: 
    i = i.set_index('column_2') 

答えて

2
for i in dflist: 
    i.set_index('column_2', inplace=True) 
0

代わりにオプションでそれを試してみてください:あなたは、おそらく私はちょうど一時的な値である、推測しているとして i = i.set_index('column_2', inplace=True)

+0

ループ内にdfを割り当てると、ループスコープの最後にすぐに不要なコピーが表示されます。 –

1

。 iを列挙型を使用してインデックスとして使用する

for i, df in enumerate(dflist): 
dflist[i] = dflist[i].set_index('column_2')) 
+0

はい!素晴らしい応答。あなたのご意見ありがとうございます。それははるかに理にかなっています。 –

+0

これを行う唯一の理由は、ランタイムがデータフレームを作成してリストにコピーし、そのインデックスにある古いアイテムを残しておく必要があるため、データフレームで新しいリストを作成する場合です。次に、インプレースを使用する方が良いですが、不変のセマンティクスは推論するのが簡単であるため、控えめに使用してください。 –

+0

真。私はどちらが私のためにうまくいくかを見に行きます。ありがとう。 –

関連する問題