2016-07-21 4 views
2

DataFrameの行を繰り返し処理し、値を新しいDataFrameに割り当てたいとします。私はこのような間接的にそのタスクを達成しました:データを読み込み、Pandasを使用してDataFrameのインデックスに設定します

#first I read the data from df1 and assign it to df2 if something happens 
counter = 0       #line1 
for index,row in df1.iterrows(): #line2 
    value = row['df1_col']   #line3 
    value2 = row['df1_col2']   #line4 
    #try unzipping a file (pseudo code)     
     df2.loc[counter,'df2_col'] = value #line5 
     counter += 1      #line6 
    #except 
     print("Error, could not unzip {}") #line7 

#then I set the desired index for df2 
df2 = df2.set_index(['df2_col']) #line7 

はLINE5に直接DF2のインデックスに値を代入する方法はありますか?申し訳ありませんが私の元の質問は不明であった。私は起こっていることに基づいてインデックスを作成しています。

答えて

0

反復処理する必要はありません、あなたが行うことができます:

df2.index = df1['df1_col'] 

あなたは本当に、反復リストに保存し、インデックスを設定したい場合

+0

感謝を。私の場合、問題は、df1で特定の条件が満たされている場合にのみインデックスをクローンすることができないため、df2にコピーすることです。 – sparrow

3

これを行う方法はたくさんあります。あなたのコードに従うと、df1.df1_colの値のインデックスを持つ空のdf2データフレームが作成されます。あなたはdf1、あなたが行うことができますをフィルタリングすることを懸念している場合

df2 = pd.DataFrame([], df1.df1_col) 
#     ^ ^
#     |  | 
# specifies no data, yet | 
#      defines the index 

:あなたは直接このようにこれを行うことが提案ハビエルため

# cond is some boolean mask representing a condition to filter on. 
# I'll make one up for you. 
cond = df1.df1_col > 10 
df2 = pd.DataFrame([], df1.loc[cond, 'df1_col']) 
+0

私は自分のコードをより明確に編集しました。条件に基づいて値を割り当てる必要があります。 – sparrow

+0

@sparrow私はあなたの編集を説明するために私の状態を編集しました。 – piRSquared

+0

申し訳ありませんが、少し不明瞭で再度編集されました。実際にはイベント(ファイルの解凍)に対応しています。 – sparrow

関連する問題