[英]access dictionary inside a function using python
所以我遇到的問題是,我不確定如何在函數內調用字典。
>>> play = pd.DataFrame(play)
>>> play
No Yes
0 Wednesday Monday
1 Thursday Tuesday
2 Saturday Friday
>>> days = 'Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'
>>> newdict = {}
>>> numbincrease = 0
>>> for i in days:
newdict[i] = numbincrease
numbincrease = numbincrease + 1
>>> print(newdict)
{'Monday': 0, 'Tuesday': 1, 'Wednesday': 2, 'Thursday': 3, 'Friday': 4, 'Saturday': 5}
因此,我想將日期轉換為數字,輸出應該能夠遍歷所有列和所有行,並讀取字典並用程序中使用的字典中的適當值替換。 輸出應如下所示:
>>> play
No Yes
0 2 0
1 3 1
2 5 4
我已經搜索了許多方法來執行此操作,但是它似乎沒有用。 我不知道如何調用一個函數來遍歷每一列,並將調用字典應用於該值,然后繼續下一行或下一列。 請幫忙,謝謝
pd.DataFrame.applymap
可用於將函數應用於數據pd.DataFrame.applymap
每個值。 在這種情況下,適當的函數是dict.get
。
請注意,如下所示,您可以使用帶有enumerate
的字典理解將天有效地映射為整數。
days = ('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')
daymap = {v: k for k, v in enumerate(days)}
res = df.applymap(daymap.get)
print(res)
No Yes
0 2 0
1 3 1
2 5 4
試試這個, .applymap
遍歷數據.applymap
每個項目
play.applymap(lambda x: newdict[x])
編輯:@jpp的建議:
play.applymap(newdict.get)
您可以這樣做:
play = play.replace(newdict)
replace
和applymap
之間的區別在於,當df中的元素不在字典中時,使用replace
元素將保持原樣:
DF:
No Yes
Wednesday Monday
Thursday Tuesday
a day Friday
與replace
:
No Yes
0 2 0
1 3 1
2 a day 4
使用applymap
您將擁有NaN
:
No Yes
0 2.0 0
1 3.0 1
2 NaN 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.