HI Это продолжение одного из моих предыдущих вопросов как мне выполнить эквивалентную операцию vlookup на моем фрейме данных с некоторыми дополнительными условиями
Как и в другом вопросе, мой первый dataframe имеет значение
list = ['Computer', 'AA', 'Monitor', 'BB', 'Printer1', 'BB', 'Desk', 'AA', 'Printer2', 'DD', 'Desk', 'BB']
list2 = [1500, 232, 300, 2323, 150, 2323, 250, 2323, 23, 34, 45, 56]
df = pd.DataFrame(list,columns=['product'])
df['number'] = list2
, и что, если у моего 2-го кадра данных есть несколько значений, скажем, 'AA', как показано ниже
list_n = ['AA','AA','BB','BB','CC','DD']
list_n2 = ['Y','N','N','Y','N','Y']
df2 = pd.DataFrame(list_n,columns=['product'])
df2['to_add'] = list_n2
, и это будет выглядеть
product to_add
0 AA Y
1 AA N
2 BB N
3 BB Y
4 CC N
5 DD Y
когда я выполняю pd.merge(df, df2, on="product", how="left")
, я получаю это
product number to_add
0 Computer 1500 NaN
1 AA 232 Y
2 AA 232 N
3 Monitor 300 NaN
4 BB 2323 N
5 BB 2323 Y
6 Printer1 150 NaN
7 BB 2323 N
8 BB 2323 Y
9 Desk 250 NaN
10 AA 2323 Y
11 AA 2323 N
12 Printer2 23 NaN
13 DD 34 Y
14 Desk 45 NaN
15 BB 56 N
16 BB 56 Y
Как вы можете видеть, теперь есть несколько строк для AA и BB. Я просто хочу, чтобы первое значение (или одно из значений) для 'AA' (и 'BB') было перенесено (естественно, без изменения последовательности данных). Короче говоря не хочу несколько строк. просто чтобы уточнить, мой df2 имеет более 6000 строк, и я не знаю, какие записи дублируются.
поэтому ответ должен выглядеть примерно так:
product number to_add
0 Computer 1500 NaN
1 AA 232 Y
2 Monitor 300 NaN
3 BB 2323 N
4 Printer1 150 NaN
5 BB 2323 N
6 Desk 250 NaN
7 AA 2323 Y
8 Printer2 23 NaN
9 DD 34 Y
10 Desk 45 NaN
11 BB 56 N