#python-3.x #pandas #string #diff
#python-3.x #pandas #строка #разница
Вопрос:
У меня есть фрейм данных, который выглядит следующим образом:
import pandas as pd
data = {'First': ['First value','Third value','Second value','First value','Third value','Second value','Third value','Second value','First value','Third value'],
'Second': ['A','B','A','A','C','B','C','B','B','D']}
df = pd.DataFrame (data, columns = ['First','Second'])
Я хотел бы сгруппировать эти два столбца и вернуть соответствующее значение, которое отсутствует для каждого значения в первом столбце в отдельном столбце. так, например, «Первое значение» из первого столбца не имеет значений B, C из второго столбца и так далее.
желаемый результат:
First unmatched value
First value D,C
Second value C,D
Third value A
Я пробовал:
df.groupby('First')['Second'].diff()
Но он не работает со строками и возвращает ошибку
Комментарии:
1. скороговорка и желаемый результат не имеют для меня смысла.
2. Я ищу метод, который возвращал бы, какая соответствующая метка отсутствует для каждого значения в первом столбце. имеет ли это смысл?
3. «верните, какая соответствующая метка отсутствует для каждого значения», тогда ваш вывод неверен? Почему «B» отсутствует для «Первого значения» и почему «D» не отсутствует для «Первого значения»?
Ответ №1:
Использовать set
:
all_values = set(df["Second"])
#{'C', 'D', 'B', 'A'}
f = lambda x: all_values - set(x)
df.groupby("First")["Second"].apply(f)
#First
#First value {C, D}
#Second value {C, D}
#Third value {A}