class Eq(object):
price = 2
# The class "constructor" - It's actually an initializer
def __init__(self, price):
self.price = price
def get_price():
return price
d = {'name': ['cac40', 'ftse100'], 'col2': [Eq, Eq]}
df = pd.DataFrame(data=d)
Le construit au dessus d' un récipient contenant trame de données dans col2
,
Je voudrais accéder à la propriété des prix de mes objets, et le mettre dans une nouvelle colonne de mon dataframe.
Je ne peux pas l'air d'être en mesure d'accéder à l'objet même.
Je suis le plus proche est df['price'] = df['col2'].values[0].price
, mais bien sûr , cela n'obtient la propriété prix de la première rangée.
Comment puis-je obtenir le prix pour toutes les lignes?
Merci
En général, si vous essayez de créer une nouvelle colonne dans une trame de données et méthodes comme celle-ci ne fonctionnent pas, ce n'est pas une mauvaise idée de chercher un moyen d'utiliser la fonction « appliquer ». Vous devriez être en mesure d'aborder le problème de cette façon:
df['price'] = df['col2'].apply(lambda x: x.price)
Bien que cela vous fait ce que vous voulez, pourquoi vous stockez votre objet directement dans le dataframe? Il pourrait y avoir une façon plus optimale pour obtenir des données de vos objets en elle en fonction de votre raisonnement.