Невозможно получить только первое обнаруженное значение при извлечении значений из столбца с pandas - PullRequest
1 голос
/ 10 января 2020

В настоящее время мой код выглядит следующим образом:

import pandas as pd

Version = {'2','4','6','8','10','12', 'more'}

data = {'Version':['some unwanted text 2 3 4 5', ' some more text 6 7 8 9 10', '12 more text 11 ']}

df = pd.DataFrame(data)

def Version_finder(x):
    df_words = set(x.split(' '))
    extract_words =  Version.intersection(df_words)
    return ' '.join(extract_words)

df['New_Version'] = df.Version.apply(Version_finder)

Вывод:

    Version                             New_Version
0   some unwanted text 2 3 4 5          4 2
1   some more text 6 7 8 9 10           6 10 more 8
2   12 more text 11                     12 more

Однако требуется вывод:

    Version                             New_Version
0   some unwanted text 2 3 4 5          2
1   some more text 6 7 8 9 10           more
2   12 more text 11                     12

** Мне нужно, чтобы в столбце «New_Version» было возвращено только 1 значение. Это должно быть первое значение в столбце версии, указанное в наборе **

1 Ответ

1 голос
/ 10 января 2020

Идея состоит не в том, чтобы преобразовать разделенные значения в набор, потому что в наборе не определен порядок, отфильтруйте в списке и в последний раз используйте next с iter для возврата первого соответствующего значения, если оно существует, None:

f = lambda x: next(iter([y for y in x.split() if y in Version]), None)
df['New_Version'] = df.Version.apply(f)
print (df)
                      Version New_Version
0  some unwanted text 2 3 4 5           2
1   some more text 6 7 8 9 10        more
2             12 more text 11          12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...