Ce que je cherche à faire est de créer de nouvelles colonnes qui capturent chaque mot dans une chaîne. L'exemple est ici:
df p> DF souhaité: p> Quelqu'un a-t-il des idées pour cela? Merci! P> p>
6 Réponses :
La méthode str.split code> scindera les chaînes dans les colonnes dans une liste de mots. Ensuite, vous pouvez remplir les listes de manière à ce qu'ils ont tous la même longueur et créent un nouveau Dataframe sur ceci: words = df.text.str.split()
maxlen = words.map(len).max()
def pad_list(l):
return l + [None] * (maxlen - len(l))
words = pd.DataFrame(np.stack(words.map(pad_list), axis=0))
Vous pouvez convertir col2 code> en une série contenant une liste avec les mots, puis convertissez la série dans un fichier de données. import pandas as pd
# OPs data
x = ['My Name is John', 'Hello friend', 'My favorite city is New Orleans']
df = pd.DataFrame(x, columns=['Col2'])
# convert to series with lists
s = df['Col2'].apply(lambda x: x.split())
# lists to dataframe
df_new = pd.DataFrame(item for item in s)
Cette fonction devrait faire. Il n'utilise pas de dataframes de Pandas, mais cela appelle les colums par leurs clés et les stocke dans leurs clés, encore une fois. Donc, il devrait être complètement compatible avec les pandas. autre que dans votre exemple, la colonne col2 code> n'est pas écrasée ou supprimée, mais les nouvelles colonnes sont ajoutées à la fin des données comme col2_0 code>, col2_1 code>, etc. p> p>
Essayez ceci,
Col1 Col2 Col3 Col4 Col5 Col6 Col7 0 38 My Name is John None None 1 11 Hello friend None None None None 2 134 My favorite city is New Orleans
Vous pouvez le créer en utilisant ceci:
import pandas as pd
df = pd.DataFrame({'Col1': [38, 11, 134],
'Col2':['My Name is John', 'Hello friend', 'My favorite city is New Orleans']})
df1 = df.Col2.str.split(expand=True)
df1.columns = ['Col1', 'Col2', 'Col3', 'Col4', 'Col5', 'Col6']
Essayez ceci, sortie: p>