【问题标题】:Use dictionary on Pandas column?在 Pandas 列上使用字典?
【发布时间】:2017-05-26 20:56:15
【问题描述】:

我想做如下的事情:

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

如果是某个月份,我正在做的是在该月的某天添加天数。例如:如果是 2 月,当月的日期是 28,我加 3 得到 31。

但这不起作用,因为我真的想将 myDict 应用于 df['Month'] 的索引,而不是直接应用于 Month 列。

我可以为我的命令做 iterrows inline 吗?我认为这通过 pandas 比遍历整个数据帧的大 for 循环执行得更快。

【问题讨论】:

  • 你能展示一个你的DataFrame的例子吗?
  • 我可以告诉你里面有什么,但我不能显示客户数据。我有月份,无论是工作日/周末,一个月中的哪一天,哪个产品,什么部门,花费的金额等。它是字符串和整数。如果您需要更多信息,请告诉我。
  • 我试图弄清楚 indexes of df['Month'] 在您的问题中的含义。这样的索引是什么样的?
  • @piRsquared 刚刚回答了这个问题。他说使用 df.Day += df.Month.map(myDict)。而 Month 是一个从 1 到 12 的整数。
  • 他根据您问题中的“索引”行更改了答案。哪一个是正确的?

标签: python pandas dictionary lambda


【解决方案1】:

试试:

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

或者:
因为我真的不明白你在做什么

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

【讨论】:

  • OP 声明:我真的想将 myDict 应用于 df['Month'] 的索引,而不是直接应用于 Month 列。 我试图弄清楚什么这些索引是。
  • df.Day += df.Month.map(myDict) 的原始答案正确更改了每一行。我认为 df.index.to_series().map(myDict) 不起作用,因为它没有引用 df.Month!通过索引,我的意思是说正在处理的列的所有行值。我不知道 index 是正确的术语。
  • @lasingallday 您要查找的术语只是index(在任何编程语言中)指的是一个值的location。这就是我们感到困惑的原因。
猜你喜欢
  • 2021-12-27
  • 2018-12-30
  • 2017-10-29
  • 2018-08-19
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
  • 2023-02-16
  • 1970-01-01
相关资源
最近更新 更多