1
votes

Convertir une colonne pandas avec des listes de flottants en une colonne avec des listes d'entiers

J'ai le dataframe pandas suivant avec la colonne de distance en tant que listes de flotteurs.

   event  type    distance
0  5      open    [59235, 34893, 359670]
1  3      open    [67614, 49029, 85593]
2  2      close   [2828, 1666, 1717]

Comment puis-je convertir la colonne de distance pour avoir des listes d'entiers?

   event  type    distance
0  5      open    [59235.1953125, 34893.48046875, 35969.94921875]
1  3      open    [67613.8828125, 49029.328125, 85592.8828125]
2  2      close   [2827.9968261719, 1665.8785400391, 1717.271240]


0 commentaires

3 Réponses :


2
votes

Juste une boucle / appliquer:

df['distance'] = [[round(y) for y in x] for x in df['distance']]


0 commentaires

2
votes

Utilisez les pandas s'appliquent -

df['distances'] = df['distances'].apply(lambda x: [round(y) for y in x])


0 commentaires

1
votes

Il existe une autre façon de procéder. Notez que les solutions utilisant la compréhension de liste sont (souvent) considérées comme une meilleure pratique.

Créez une fonction:

df['distance2'] = list(map(make_integer, df['distance']))

La fonction créée est utilisée dans une autre fonction de map :

def make_integer(dat):
    return(list(map(int, dat)))


0 commentaires