使用python访问函数内的字典

时间:2018-06-21 09:39:46

标签: python pandas dictionary dataframe

所以我遇到的问题是,我不确定如何在函数内调用字典。

<input type="text" class="form-control" id="na" name="na" maxlength="5" placeholder="NA" onkeyup="this.value = minmax(this.value, 0, 100)"/>

因此,我想将日期转换为数字,输出应能够遍历所有列和所有行,并读取字典并用程序中使用的字典中的适当值替换。输出应如下所示,

>>> 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}

我已经搜索了许多方法来执行此操作,但是它似乎不起作用。我不知道如何调用一个函数来遍历每一列,并将调用字典应用于该值,然后继续下一行或下一列。 请帮忙,谢谢

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

尝试一下,.applymap遍历数据框中的每个项目
play.applymap(lambda x: newdict[x])


编辑:@jpp的建议:
play.applymap(newdict.get)

答案 2 :(得分:1)

您可以这样做:

play = play.replace(newdict)

replaceapplymap之间的区别在于,当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