【问题标题】:Mapping Dictionary of Functions to DataFrame based on Key基于Key的函数字典到DataFrame的映射
【发布时间】:2020-05-29 09:04:33
【问题描述】:

说明

我目前有一个函数字典,它们都执行不同的字符串操作,给定一个输入字符串作为参数(参见下面的图 1)。除了名称和名称类型 之外,我还有一个现有的 pandas DataFrame,其中包含一个或多个相同的字典键(参见下图 2):

必填

我希望根据字典中存储的键和 DataFrame 中的 S-ID 列,将图 1 下字典中存储的函数映射到 DataFrame 名称(SDN_NAME 列)。

  • 注意:字典中存储的每个函数可能会执行不同的操作,这将导致每个输入字符串的输出不同。

请在执行上述以下过程时提供任何帮助/建议。

图 1:

scenarios = {
    '1-A': function1(), 
    '1-B': function2(), 
    '1-C': function3(), 
    '1-D': function4()
}

图 2:

【问题讨论】:

  • 您好,欢迎来到 StackOverflow!你知道 pandas .apply() 方法吗?此外,请不要发布数据图像,而是您的数据的文本表示形式 - 以便我们在检查解决方案时可以在代码中处理您的数据。
  • 到底是什么问题?你有没有尝试过,做过任何研究? Stack Overflow 不是免费的代码编写服务。请参阅:tourHow to Askhelp centermeta.stackoverflow.com/questions/261592/…

标签: python pandas mapping


【解决方案1】:

这样的事情应该可以工作:

import pandas as pd

def f(x):
    return len(x)
def g(x):
    return len(x)/2

d = {'a':f,'b':g}

t = pd.DataFrame({'key':['a','a','b','a'],'v':['harsha','har','asdf','h']})

t['output'] = t.apply(lambda x: d[x['key']](x['v']),axis=1)

输出:

  key       v  output
0   a  harsha     6.0
1   a     har     3.0
2   b    asdf     2.0
3   a       h     1.0

【讨论】:

  • 感谢 Assetti,这行得通。我试图使用 applymap,但效果很好!
猜你喜欢
  • 1970-01-01
  • 2016-09-02
  • 2018-06-12
  • 1970-01-01
  • 2021-08-04
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多