2015-11-07 191 views
-1

像我有一個數據幀寫for循環的粗暴:如何避免對大熊貓據幀

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循環,這是否犯規,但我不知道我怎麼會寫一個量化的行動來實現同樣的事情。此外,邊緣情況是索引位置0,沒有什麼可以比較它的begin_month值。

回答

0
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,因爲它沒有前置任務來比較它。

+0

請給你的答案添加一些解釋。 – Haris

+1

@哈里斯我補充說明的情況下,答案是不言自明的。 – user3556757