2017-03-01 10 views
0

私は7つの列を含むデータフレームを持っているので、それらの2つを同時にループして各行の値を比較したいと思います。これはwatchColとdiaryColが列番号でループヘッダ、のための私です:私はこれを実行するとデータフレーム内の2つの列を通る各ループの方法は?

for watch, diary in df.iloc[:, watchCol], df.iloc[:, diaryCol]: 

、私はその行の次のエラーを取得する:

ValueError: too many values to unpack (expected 2)

は私が間違って何をしているのですか?

おかげ

EDIT:

どちらの列が日付時刻が含まれています。私は2つの値を比較する必要があり、その差がある範囲内にあれば、watchColの値を別の列にコピーします。それ以外の場合は次の行に移動します。

+0

何の比較実行しようとしていますか?ルーピングはほとんど確かに答えではなく、それは非常に小さい "ほぼ"です。 – miradulo

+0

df.iloc [、、[watchCoo、diaryCol]]。iterrows() 'でidx、(watch、diary)を試してください。ここで、idxはインデックスの列を指します。しかし、おそらくループする必要はありません。 – pansen

+0

腕時計、ダイアリージップ(df.iloc [:、watchCol]、df.iloc [:, diaryCol]): ジップワークですか? Zipは2つのリストをタプルのリストにパックします – user1462442

答えて

0

あなたが行でエントリの行を比較しようとしている場合は、これを試してみてください。

import pandas as pd 
df = pd.DataFrame({"a": [2, 2, 2, 2, 2], "b": [4, 3, 2, 1, 0]}) 

df["a greater than b"] = df.apply(lambda x: x.a > x.b, axis=1) 
print df 

    a b a greater than b 
0 2 4   False 
1 2 3   False 
2 2 2   False 
3 2 1    True 
4 2 0    True 

あなたが行で要素の行をループしたかった場合は、言った:

for a, b in zip(df.iloc[:, 0], df.iloc[:, 1]): 
    print a, b 

2 4 
2 3 
2 2 
2 1 
2 0 
関連する問題