как выполнить эквивалентную операцию vlookup на моем фрейме данных с некоторыми дополнительными условиями - PullRequest
0 голосов
/ 30 апреля 2020

HI Я пытаюсь запустить эквивалентную функцию поиска на python, но попробовав слияние и соединение, я еще не достиг цели.

, поэтому мой первый df - это

list = ['Computer', 'AA', 'Monitor', 'BB', 'Printer', 'BB', 'Desk', 'AA', 'Printer', '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

Вот как будет выглядеть df

     product  number
0   Computer   1500
1         AA    232
2    Monitor    300
3         BB   2323
4    Printer    150
5         BB   2323
6       Desk    250
7         AA   2323
8    Printer     23
9         DD     34
10      Desk     45
11        BB     56

Это 2-й кадр данных

list_n = ['AA','BB','CC','DD']
list_n2 = ['Y','N','N','Y']

df2 = pd.DataFrame(list_n,columns=['product'])
df2['to_add'] = list_n2

Так выглядит df2

  product to_add
0      AA      Y
1      BB      N
2      CC      N
3      DD      Y

Теперь как добавить столбец ('to_add') к первому фрейму данных (df), чтобы он выглядел примерно так: В Excel это простой vlookup. Я пробовал функции 'слияния' и 'объединения', но это изменяло последовательность моего df, и я не хочу, чтобы последовательность менялась. есть идеи?

     product  price to_add
0   Computer   1500       
1         AA    232      Y
2    Monitor    300       
3         BB   2323      N
4    Printer    150       
5         BB   2323      N
6       Desk    250       
7         AA   2323      Y
8    Printer     23       
9         DD     34      Y
10      Desk     45       
11        BB     56      N

1 Ответ

1 голос
/ 30 апреля 2020

pd.merge действительно выполнит эту работу, возможно, вы использовали ее неправильно:

pd.merge(df, df2, on="product", how="left")

вернет:

     product  number to_add
0   Computer    1500    NaN
1         AA     232      Y
2    Monitor     300    NaN
3         BB    2323      N
4    Printer     150    NaN
5         BB    2323      N
6       Desk     250    NaN
7         AA    2323      Y
8    Printer      23    NaN
9         DD      34      Y
10      Desk      45    NaN
11        BB      56      N
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...