Étant donné le dataframe
suivant :
df = pd.DataFrame({'col1': ["kuku", "pu", "d", "fgf"]})
Je veux calculer la longueur de chaque chaîne et ajouter une colonne Cumsum.
Je suis essayez de le faire avec df.str.len ("col1")
mais cela génère une erreur.
5 Réponses :
Utilisez str.len()
col1 New 0 kuku 4 1 pu 2 2 d 1 3 fgf 3 0 4 1 6 2 7 3 10 Name: New, dtype: int64
Sortie: strong>
import pandas as pd df = pd.DataFrame({"col1": ["kuku", "pu", "d", "fgf"]}) df["New"] = df["col1"].str.len() print(df) print(df["New"].cumsum()) #cumulative sum
Puis-je les chaîner tous à un code de ligne? Comme je le fais en R?
Bien sûr df ["New"] = df ["col1"]. Str.len (). Cumsum ()
Le code d'initialisation du dataframe est incorrect. Essayez ceci.
>>> df['len'] = df.col1.str.len() >>> df col1 len 0 kuku 4 1 pu 2 2 d 1 3 fgf 3
Vous pouvez également utiliser map
.
>>> df.col1.map(lambda x: len(x)) 0 4 1 2 2 1 3 3
Pour calculer la longueur.
>>> df = pd.DataFrame({'col1': ["kuku", "pu", "d", "fgf"]}) >>> df col1 0 kuku 1 pu 2 d 3 fgf
Ou importer des pandas en tant que pd
df = pd.DataFrame({ "col1" : ["kuku", "pu", "d", "fgf"]}) df['new'] = df.col1.apply(lambda x: len(x))
Votre argument col1 est un argument inconnu de pd.DataFrame () ...
Utilisez plutôt data comme nom d'argument ... Ensuite, ajoutez votre nouvelle colonne avec la longueur
data = {'col1': ["kuku", "pu", "d", "fgf"]} df = pd.DataFrame(data=data) df["col1 lenghts"] = df["col1"].str.len() print(df)
Voici une autre alternative qui, je pense, a résolu mon problème:
df = pd.DataFrame({"col1": ['dilly macaroni recipe salad', 'gazpacho', 'bake crunchy onion potato', 'cool creamy easy pie watermelon', 'beef easy skillet tropical', 'chicken grilled tea thigh', 'cake dump rhubarb strawberry', 'parfaits yogurt', 'bread nut zucchini', 'la salad salmon']}) df["title_len"] = df[1].str.len() df["cum_len"] = df["title_len"].cumsum()