我有一个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值。
答案 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,因为它没有比较它的前身。