2017-03-01 52 views
0

我有一個數據幀包含7列,我想同時循環其中兩個比較每行中的值。這是我的循環頭,其中watchCol和diaryCol是列數:如何通過數據框中的兩列進行循環?

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

當我運行它,我得到這條線以下錯誤:

ValueError: too many values to unpack (expected 2)

我在做什麼錯?

感謝

編輯:

兩個列包含日期時間。我需要比較這兩個值,如果差異在一定範圍內,我將watchCol中的值複製到另一列中,否則我移動到下一行。

+0

什麼比較你想表演嗎?循環幾乎肯定不是答案,並且這是一個「幾乎」的小「。 – miradulo

+0

在df.iloc [:, [watchCoo,diaryCol]]中嘗試使用'idx,(watch,diary)。iterrows()'其中idx指向您的索引列。但你可能甚至不需要循環。 – pansen

+0

用於手錶,拉鍊日記(df.iloc [:, watchCol],df.iloc [:,diaryCol]): 會拉鍊工作? Zip將這兩個列表打包成一個元組列表 – 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 
相關問題