如何通过数据帧中的两列循环?

时间:2017-03-01 21:46:15

标签: python pandas dataframe

我有一个包含7列的数据框,我想同时循环其中两列来比较每行中的值。这是我的for循环标题,其中watchCol和diaryCol是列号:

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

当我运行此操作时,我在该行上收到以下错误:

  

ValueError:解压缩的值太多(预期2)

我做错了什么?

由于

编辑:

两列都包含日期时间。我需要比较两个值,如果差异在一定范围内,我将watchCol中的值复制到另一列,否则我将移动到下一行。

1 个答案:

答案 0 :(得分: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