Как назначить значение столбцу для каждой строки в панде? [Дубликат]

Абстрактные классы должны унаследоваться от, и когда один класс наследует от другого, это означает, что между двумя классами существует сильная связь. С другой стороны, с интерфейсом связь между самим интерфейсом и классом, реализующим интерфейс, не обязательно является сильной. Итак, мы можем обобщить этот первый пункт, сказав, что абстрактный класс будет более уместным, если будет существовать сильная связь между абстрактным классом и классами, которые будут получены из него. Опять же, это связано с тем, что абстрактный класс очень тесно связан с наследованием, что подразумевает сильные отношения. Но с интерфейсами не должно быть сильной связи между интерфейсом и классами, реализующими интерфейс. Интерфейс Java может расширять несколько интерфейсов, и Java-класс может реализовывать несколько интерфейсов, что означает, что интерфейс может обеспечить большую поддержку полиморфизма, чем абстрактный класс. Расширяя абстрактный класс, класс может участвовать только в одной иерархии типов, но с помощью интерфейса он может быть частью иерархии нескольких типов.

Чтобы реализовать интерфейс в Java, пока ваш класс не абстрактный, вам нужно для обеспечения реализации всех методов, что очень болезненно. С другой стороны, абстрактный класс может помочь вам в этом случае, предоставив реализацию по умолчанию.

6
задан user7146289 29 March 2019 в 16:32
поделиться

2 ответа

Другой способ использования itertools.product() , который дает декартово произведение входных итерируемых.

import itertools
df=(pd.DataFrame(list(itertools.product(brand_name.brand_name,object_raw.object_name))
             ,columns=['brand_name','object_name']))
df['category_id']=df['object_name'].map(object_raw.set_index('object_name')['category_id'])
print(df)
<ч>
  brand_name object_name  category_id
0       Nike     T-shirt           24
1       Nike      Shorts           45
2       Nike       Dress           32
3    Lacoste     T-shirt           24
4    Lacoste      Shorts           45
5    Lacoste       Dress           32
6     Adidas     T-shirt           24
7     Adidas      Shorts           45
8     Adidas       Dress           32
0
ответ дан anky_91 29 March 2019 в 16:32
поделиться

Это известно как декартово произведение. В пандах это немного сложно, но вы можете сделать это так:

import pandas as pd

objects = pd.DataFrame(["T-shirt","Shorts","Dress"],columns = ['object'])
brands =  pd.DataFrame(["Nike","Lacoste","Adidas"],columns = ['brand'])

objects["key"] = 1
brands ["key"] = 1

objects.merge(brands,on='key').drop('key',axis=1)
0
ответ дан Christian Sloper 29 March 2019 в 16:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: