如何避免在pandas数据帧上写一个粗略的for循环

时间:2015-11-07 07:20:24

标签: python pandas

我有一个DataFrame,如:

import pandas as pd

begin_month = pd.Series([1, 19, 45, 32, 54])
end_month = pd.Series([19,45,32,54,99])

inventory = pd.DataFrame({"begin_month":begin_month, "end_month": end_month})

我想制作第三列,一个布尔值,表示"对于每个月,begin_month库存==上个月的end_month库存水平?"

我可以写一个犯规for-loop来做到这一点,但我想知道如何编写一个矢量化动作来实现同样的目的。此外,边缘情况是索引位置0,没有什么可比较其begin_month值。

1 个答案:

答案 0 :(得分:1)

import pandas as pd

begin_month = pd.Series([1, 19, 145, 32, 54])
end_month = pd.Series([19,45,32,54,99])

df = pd.DataFrame({"begin_month":begin_month, "end_month": end_month})

df['parity'] = df['begin_month'] == df['end_month'].shift()
df.ix[0,'parity'] = True

print df

关键是使用.shift(),以便您可以将当前行与相邻行进行比较。并且我设置了df.ix [0,'parity'] = True,因为它没有比较它的前身。