если df['col']='a','b','c'
и df2['col']='a123','b456','d789'
как создать df2['is_contained']='a','b','no_match'
где, если значения из df['col']
находятся в пределах значений от df2['col']
значение df['col']
возвращается, и если совпадение не найдено, «no_match» возвращается? Также я не ожидаю, что будет несколько совпадений, но в маловероятном случае я хочу вернуть строку типа «Несколько совпадений».Проверьте столбец Панды содержит значение из другого столбца
ответ
С помощью этого набора игрушек данных, мы хотим, чтобы добавить новый столбец df2
, который будет содержать no_match
в течение первых трех строк, а последняя строка будет содержать значение 'd'
из-за того, что col
значения этой строки (в письме 'a'
) появляется в df1.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df1 = pd.DataFrame({'col': ['a', 'b', 'c', 'd']})
df2 = pd.DataFrame({'col': ['a123','b456','d789', 'a']})
Другими словами, значения из df1
следует использовать для заполнения этого нового столбца в df2
только тогда, когда значение подряд в df2['col']
появляется где-то в df1['col']
.
In [2]: df1
Out[2]:
col
0 a
1 b
2 c
3 d
In [3]: df2
Out[3]:
col
0 a123
1 b456
2 d789
3 a
Если это правильный путь, чтобы понять ваш вопрос, то вы можете сделать это с пандами isin
:
In [4]: df2.col.isin(df1.col)
Out[4]:
0 False
1 False
2 False
3 True
Name: col, dtype: bool
Это вычисляется True
только тогда, когда значение в df2.col
также в df1.col
.
Тогда вы можете использовать np.where
, что более или менее похоже на ifelse
в R, если вы знакомы с R вообще.
In [5]: np.where(df2.col.isin(df1.col), df1.col, 'NO_MATCH')
Out[5]:
0 NO_MATCH
1 NO_MATCH
2 NO_MATCH
3 d
Name: col, dtype: object
Для строк, где значение df2.col
появляется в df1.col
, значение из df1.col
будет возвращено для данного индекса строки. В случаях, когда значение df2.col
не является членом df1.col
, используется значение по умолчанию 'NO_MATCH'
.
Я действительно хочу, чтобы он соответствовал частичному совпадению. Поэтому в вашем примере каждое значение будет иметь совпадение. Я не думаю, что isin обрабатывает частичное совпадение. – ChrisArmstrong
В 0.13, Вы можете использовать str.extract
:
In [11]: df1 = pd.DataFrame({'col': ['a', 'b', 'c']})
In [12]: df2 = pd.DataFrame({'col': ['d23','b456','a789']})
In [13]: df2.col.str.extract('(%s)' % '|'.join(df1.col))
Out[13]:
0 NaN
1 b
2 a
Name: col, dtype: object
- 1. Проверьте, не содержит ли значение столбца другой столбец
- 2. SQL Проверьте столбец подстрока другого столбца
- 3. Проверьте WPF DataRowView содержит столбец
- 4. питон: панды: фильтр один столбец и получить среднее другого столбца
- 5. Панды: создать новый столбец, если значение из одного столбца содержит подстроку
- 6. Обновить один столбец из подстроки другого столбца
- 7. Update столбец из другого столбца присоединиться ,,
- 8. панды GroupBy значения другого столбца
- 9. Как установить столбец, отмеченный из другого столбца
- 10. Как создать столбец в Microstrategy, который содержит сумму другого столбца
- 11. Проверьте массив содержит число из другого массива
- 12. Проверьте список содержит предмет из другого списка
- 13. Проверьте слово в словаре и получить значение из другого столбца
- 14. Проверьте, содержит ли столбец последовательность
- 15. Проверьте, существует ли значение внутри столбца, если не создается столбец
- 16. Excel, если столбец больше нуля, а другой столбец содержит «Competitor», вычитайте значение другого столбца на один
- 17. Имея 1 отчетливую столбец и значение суммы из другого столбца
- 18. Pandas переименовать/переместить столбец, используя значение из другого столбца
- 19. Проверьте, содержит ли строка значение из заданного массива в vba
- 20. Панды разделить значение столбца новый столбец, если список
- 21. панды даты сдвиг с использованием значений из другого столбца
- 22. Проверьте массив содержит значение
- 23. Как добавить целочисленное значение другого столбца в столбец даты?
- 24. Таблица данных - выберите значение столбца по имени из другого столбца
- 25. Piglatin, чтобы найти, если столбец содержит содержимое другого столбца
- 26. проверка, если столбец содержит часть другого столбца в г
- 27. проверить, если столбец содержит все значения другого столбца - Mysql
- 28. Создание панд столбца DataFrame из выбранных значений из другого столбца
- 29. Обновить столбец с выбором из другого столбца
- 30. SQLite - обновить столбец из другого столбца
Что вы имеете в виду под "нескольких матчей"? Вы имеете в виду два '' a '' '' a123a '', или вы имеете в виду в разных строках df2 ['col'], например. '[ 'A123', 'b456', 'a789'] '? – DSM
Последний случай, когда разные строки сопоставляются – ChrisArmstrong