Я хочу проверить, содержит ли строка одно или несколько значений из двух словарей.Python str.contains из двух или более словарей
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
и, делая это, как предполагается заменить каждую ячейку "Equity"
, если он содержит "AXP"
, "BIDU"
или "GOOG"
.
Что такое 'df'? Пожалуйста, напишите минимальный рабочий пример. –
df - это DataFrame Pandas. Я кратко расскажу об этом с рабочим примером. – Winterflags
Из документации для 'zip():' * Возвращаемый список усечен по длине с длиной кратчайшей последовательности аргументов * – boardrider