我目前正在通过以下函数将各种字符串值映射并重命名为pandas
中的列:
df["fundbenchmark"] = df["name"].map(lambda x: "American Express" if "AXP" in x else "Apple" if "AAPL" in x else "Google" if "GOOG" in x else "")
不过,我将对多个列和许多不同的重命名执行此操作。这是另一个具有相同内容的专栏,因此在那里添加所有公司也是重复的。在
^{pr2}$因此,我想维护一个字典,比如:
companies = {"AXP": "American Express", "AAPL": "Apple", "GOOG": "Google"}
当我需要绘制公司名称时,可以调用它。我如何使它map
来匹配companies
而不是{
当前数据帧:
Name
"BULL AXP UN X3 VON"
"BEAR AXP UN X3 VON"
"BULL GOOG UN X5 VON"
"BEAR GOOG UN X5 VON"
"BEAR ABC123 X2 CBZ"
期望输出:
Name Fundbenchmark Subclass
"BULL AXP UN X3 VON" "American Express" "American Express"
"BEAR AXP UN X3 VON" "American Express" "American Express"
"BULL GOOG UN X5 VON" "Google" "Google"
"BEAR GOOG UN X5 VON" "Google" "Google"
"BEAR ABC123 X2 CBZ" "BEAR ABC123 X2 CBZ" "BEAR ABC123 X2 CBZ" #Not in Dictionary
字典:
companies = {"AXP": "American Express", "GOOG": "Google"}
所以,如果字典中存在缩写,那么就把这个名字写到其他列中。在
如果整个单元格中的缩写不重复,则为整个单元格。在
我怀疑这是最优雅的方式,但它应该能做到:
这里要记住的一点是,因为这不是字典查找,所以可以有多个匹配项。例如,“ABC”和“UN”都是有效的股票代码,“BEAR”是或曾经是。使用此方法,将保留最后一个匹配项,并丢弃任何先前的匹配项。在
您可以使用
map
我们创建一个新列,从列中提取股票代码。在
^{pr2}$然后,我们使用将字典
companies
映射到tickers来创建一个列,其中包含股票代码符号的名称:使用替换:
http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.replace.html
创建:
^{pr2}$然后在字典中映射替换项:
然后更换:
相关问题 更多 >
编程相关推荐