0
votes

Convertir un objet Pandas en tableau

J'ai une colonne dans Dataframe qui est de l'objet de type. Je veux le convertir en un tableau. Ex:

'["399866273","12444645","162497334"]'


7 commentaires

Si vous voulez dire un numpy.ndarray , vous voulez juste my_df ['colonne']. Valeurs , si vous voulez une liste , alors vous venez de veulent my_df ['colonne']. to_list ()


Je ne peux pas faire ça, il dirait que "Str" L'objet n'a pas d'attribut 'valeurs' @ Juanpa.arrivillaga


Ensuite, Vous n'avez pas de DataFrame Vous avez str . Comment avez-vous produit cette chaîne? Vous devez fournir un exemple de reproductible minimal .


Essayez Dir (ToOObject) pour l'objet que vous obtenez. Cela peut aider à déterminer ce que vous traitez.


@ Mike67 ou juste type (my_Object)


@ Juanpa.arrivillaga C'est une colonne d'un Dataframe. Quand je fais df.dtype, cela montre cette colonne comme objet.


@Johnconcstantine alors vous ne faites pas ce que je vous ai dit. Veuillez encore fournir un exemple de reproductible minimal si vous obtenez bien cette erreur.


3 Réponses :


0
votes

Si vous voulez dire une liste, vous pouvez simplement utiliser eval ()


0 commentaires

1
votes
import json
import numpy as np

def toarray(s):
    x = json.loads(s)
    arr = np.array(x)
    return arr

# Test
s = '["399866273","12444645","162497334"]'
asset type(toarray(s)) == np.ndarray
assert all(toarray(s) == np.array(["399866273", "12444645", "162497334"]))

# Apply to df
colname = ...  # your col name
df['as_array'] = df[colname].apply(toarray)

0 commentaires

1
votes

Vous pouvez essayer quelque chose comme ceci:

df = pd.DataFrame(['["399866273","12444645","162497334"]'], columns = ['Column_ObjectType'])

df.dtypes
#output
Column_ObjectType    object
dtype: object

df[['Value1','Value2','Value3']] = df.Column_ObjectType.str.split(",", expand=True)
df.head()
#output
                      Column_ObjectType        Value1      Value2        Value3
0  ["399866273","12444645","162497334"]  ["399866273"  "12444645"  "162497334"]

df['Value1'] = df.Value1.apply(lambda x: x[2:-1])
df['Value2'] = df.Value1.apply(lambda x: x[1:-1])
df['Value3'] = df.Value1.apply(lambda x: x[1:-1])
df.head()
#output
                  Column_ObjectType     Value1    Value2    Value3
0  ["399866273","12444645","162497334"]  399866273  39986627  39986627


0 commentaires