У меня есть фрейм данных:
df1 = pd.DataFrame({'Name': ['Bob', 'Bob', 'Bob', 'Joe', 'Joe', 'Joe', 'Alan', 'Alan', 'Steve', 'Steve'],
'ID': [1,2,3,4,5,6,7,8,9,10],
'Value': ['Y','Y','Y','N','N','N','Y','N','N','Y']})
Name ID Value
Bob 1 Y
Bob 2 Y
Bob 3 Y
Joe 4 N
Joe 5 N
Joe 6 N
Alan 7 Y
Alan 8 N
Steve 9 N
Steve 10 Y
Мне нужно вычислить новый столбец Result
, который имеет следующее правило. Для каждой группы Name
Боб, Джо и др. c., Если каждый Value
равен 'Y', присвойте каждому значению Y в новом столбце. В противном случае присвойте ему 'N'.
Итак, идеальный вывод:
Name ID Value Result
Bob 1 Y Y
Bob 2 Y Y
Bob 3 Y Y
Joe 4 N N
Joe 5 N N
Joe 6 N N
Alan 7 Y N
Alan 8 N N
Steve 9 N N
Steve 10 Y N
Это то, что у меня пока есть, но не работает правильно.
df1['Result'] = df1.groupby('Name').Value.all().reindex(df1.Name).astype(str).values
df1