2017-01-11 28 views
1

我想要做的東西像下面這樣:在Pandas專欄上使用詞典?

df['Day'] = df['Day'].apply(lambda x: x + myDict[df['Month']]), 

其中

myDict={2:3,4:1,6:1,9:1,11:1,1:0,3:0,5:0,7:0,8:0,10:0,12:0}. 

我在做什麼是添加了許多天到一個月的一天,如果它是一個特定的月份。例如:如果是二月份,月份的日期是28,則我加3得到31.

但是這不起作用,因爲我真的想將myDict應用於df ['Month']的索引,而不是月份列直接。

我可以爲我的命令在內聯行嗎?我認爲這將通過熊貓更快地執行,而不是遍歷整個數據框的大循環。

+0

你能證明你的數據幀的例子嗎? – chrisaycock

+0

我可以告訴你它裏面有什麼,但我無法顯示客戶數據。我有月份,無論是週末/週末,每月的哪一天,哪個產品,哪個部門,花費的金額等等。它是字符串和整數。讓我知道你是否需要更多信息。 – lasingallday

+0

我想弄清楚是什麼* df ['月'] *指數在您的問題意味着什麼。這樣的指數是什麼樣的? – chrisaycock

回答

2

嘗試:

df.Day += df.Month.map(myDict) 

或者:
,因爲我真的不明白你在做什麼

df.Day += df.index.to_series().map(myDict) 
+1

OP狀態:*我真的想將myDict應用於df ['Month']的索引,而不是直接使用Month列。*我試圖找出這些索引是什麼。 – chrisaycock

+0

@chrisaycock thx ...我誤讀了 – piRSquared

+0

df.Day + = df.Month.map(myDict)的原始答案,正確更改了每一行。我不認爲df.index.to_series()。map(myDict)可以工作,因爲它沒有對df.Month的引用!通過索引,我的意思是說列的所有行值在被解決。我不知道這個索引是適當的術語。 – lasingallday