web-dev-qa-db-fra.com

Les pandas divisent la colonne en plusieurs colonnes par une virgule

J'essaie de scinder une colonne en plusieurs colonnes en fonction de la séparation par virgule/espace.

Mon cadre de données ressemble actuellement à

     KEYS                                                  1
0   FIT-4270                                          4000.0439
1   FIT-4269                                          4000.0420, 4000.0471
2   FIT-4268                                          4000.0419
3   FIT-4266                                          4000.0499
4   FIT-4265                                          4000.0490, 4000.0499, 4000.0500, 4000.0504,

J'aimerais

   KEYS                                                  1           2            3        4 
0   FIT-4270                                          4000.0439
1   FIT-4269                                          4000.0420  4000.0471
2   FIT-4268                                          4000.0419
3   FIT-4266                                          4000.0499
4   FIT-4265                                          4000.0490  4000.0499  4000.0500  4000.0504 

Mon code supprime actuellement la colonne KEYS et je ne sais pas pourquoi. Quelqu'un pourrait-il améliorer ou aider à résoudre le problème?

v = dfcleancsv[1]

#splits the columns by spaces into new columns but removes KEYS?

dfcleancsv = dfcleancsv[1].str.split(' ').apply(Series, 1)
5
Anekdotin

Si quelqu'un d'autre souhaite séparer une colonne unique (avec des listes incorporées, délimitées par une virgule) en plusieurs colonnes (sans le pd.concat), essayez ceci:

data[0].str.split(',', expand=True)

Cela répond à la question que je suis venu chercher ici. 

7
Anthony R

Utiliser Edchums réponse de

pd.concat([df[[0]], df[1].str.split(', ', expand=True)], axis=1)

J'ai pu le résoudre en substituant mes variables.

dfcleancsv = pd.concat([dfcleancsv['KEYS'], dfcleancsv[1].str.split(', ', expand=True)], axis=1)
3
Anekdotin

peut-être que cela devrait marcher:

df = pd.concat([df['KEYS'],df[1].apply(pd.Series)],axis=1)
0
Siraj S.