Замена значений в столбце с использованием значений в списке - PullRequest
0 голосов
/ 26 октября 2018

На этот вопрос уже можно ответить в стеке, и я просто не знаю, как лучше сформулировать этот вопрос.Но я пытаюсь просмотреть столбец (data ["Id"]) в DataFrame (data), который содержит неполные строки, и заменить их законченными версиями, которые есть в списке.

Я могу '• сделать переключение напрямую, просто переназначив значения столбца значениями списка, потому что значения в столбце упорядочены случайным образом и связаны с другими значениями столбца в информационном кадре, которые важны.

Я пытался сделать это:

for img_name in images_list:
    for label in data["Id"]:
        if label in img_name:
            data["Id"] = data["Id"].replace(label,img_name)

Но мой список значений и столбцов довольно велики (120 000 каждый), поэтому этот метод будет длиться вечно.Мне было интересно, если кто-нибудь знает лучший способ решения этой проблемы?Я заранее прошу прощения, если этот вопрос является излишним, и буду признателен за ссылку, которая отвечает на этот вопрос.

Пример списка:

["0img1_type1.png", "1img1_type2.png "," 2img1_type3.png "]

data [" Id "] Пример:

[" 0img1 "," 1img1 "," 2img1 "]

1 Ответ

0 голосов
/ 26 октября 2018

На основе вашего примера вы можете использовать:

df = pd.DataFrame([["0img1","1img1","2img1"]]).T
df.columns = ['id']

l = ["0img1_type1.png","1img1_type2.png","2img1_type3.png"]
l = set(l)

df['id'] = df['id'].apply(lambda x: [i for i in l if x in i][0])
df

Он в основном получает первое значение из вашего списка, которое соответствует подстроке в значениях вашего столбца. Для более быстрого поиска лучше конвертировать list в set.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...