【发布时间】:2015-09-09 19:04:20
【问题描述】:
我想检查一个字符串是否包含来自两个字典的一个或多个值。
company = {"AXP": "American Express", "BIDU": "Baidu"}
stock_index = {"GOOG": "Google"}
for c, i in zip(company, stock_index):
df.loc[df.name.str.contains(c, i), "instrumentclass"] = "Equity"
由于某种原因,它只为字典中的第一个匹配项写入"Equity",即"AXP":"American Express"。对于"Baidu"和"Google",没有任何反应。
我知道我可以将字典合二为一,如下所示,但我不想这样做。
benchmarks = company.copy()
benchmarks.update(stock_index)
在pandas DataFrame 的帮助下写入和检索数据。
import pandas as pd
df = pd.DataFrame(["LONG AXP", "SHORT AXP", "LONG BIDU", "LONG GOOG"], columns=["name"])
代码将name 列复制到instrumentclass 列,如果每个单元格包含"AXP"、"BIDU" 或"GOOG",则应该将其替换为"Equity"。
【问题讨论】:
-
df是什么?请写一个最小的工作示例。 -
df 是 Pandas 数据帧。我很快就会用一个工作示例更新这个问题。
-
来自
zip():的文档返回的列表长度被截断为最短参数序列的长度 -
@boardrider 啊,这就是它不起作用的原因。有没有办法让它检查两个字典而不合并它们?
-
遍历所有字典,检查值是否存在。
标签: python python-2.7 dictionary pandas