Fake Data:
Comment écrire les colonnes suivantes en python?
UpperCaseWords: somme des mots majuscules de chaque ligne
% de mots majuscules: pourcentage de texte en majuscules
3 Réponses :
Utilisez .str.split () pour diviser les mots d'une phrase dans une liste, puis utilisez .str.isupper () pour compter les mots qui sont complètement en majuscules:
split count_upper perc 0 how are you DOING OR [how, are, you, DOING, Or] 1 5 20. 1 WE want NOW ansWers [WE, want, NOW, ansWers] 2 4 50.
Trame de données résultante:
# example data
df = pd.DataFrame(
{'A': ['how are you DOING Or', 'WE want NOW ansWers']}
)
# split your string, default split is on a space
# you get a list words
df['split_words'] = df['A'].str.split()
# iterate over list of words and count how many are uppercase
df['count_upper_case_words'] = df['split_words'].apply(
lambda list_: sum(1 for word in list_ if word.isupper())
)
# count total number of words
df['count_total_words'] = df['split_words'].str.len()
# calculate percentage of uppercase words
df['perc_uper_case'] = df['count_upper_case_words'] / df['count_total_words'] * 100.
Vous pouvez utiliser .str.count() pour compter séparément les occurrences de majuscules et le nombre total de mots. De là, vous pouvez utiliser la division pour calculer le pourcentage de mots en majuscules.
df["n_uppercase_words"] = df["A"].str.count(r"\b[A-Z]+\b")
df["n_words"] = df["A"].str.count(r"\b\w+\b")
df["percent_uppercase_words"] = df["n_uppercase_words"] / df["n_words"] * 100
print(df)
A n_uppercase_words n_words percent_uppercase_words
0 My name is JACOB 1 4 25.0
1 Football and BASKETBALL and SOCCER 2 5 40.0
2 North Dakota 0 2 0.0
3 South Dakota 0 2 0.0
Expressions régulières:
\b[AZ]+\b : capture une ou plusieurs lettres majuscules consécutives qui ont une forme de séparation de chaque côté\b[A-Za-z]+\b : Identique à ci-dessus, mais inclut également des lettres minuscules.Cette solution ignorera les nombres ou les "mots" contenant des nombres (ou tout autre caractère qui n'est pas une lettre az).
très facile à comprendre
A uppercase percentage 0 ABC 1 100.0 1 abc BCD 1 50.0
PRODUCTION:
import pandas as pd
data = {'A':['ABC', 'abc BCD']}
df = pd.DataFrame(data) #feed data to create DataFrame
def count(row):
return sum(word.isupper() for word in row.split()) #split given sentence and check each word if uppercase or not
def percentage(row):
return (int(row['uppercase']) / len(row['A'].split())) * 100. #count the number of words and uppercase word to calculate percentage
df['uppercase'] = df['A'].apply(lambda row: count(row))
df['percentage'] = df.apply(lambda row: percentage(row), axis=1)
df #final data frame
Salut @ ssp4all, la question compte le pourcentage de mots en majuscules, donc votre code doit être ajusté
@ sander-van-den-oord merci pour le commentaire. J'ai mis à jour ma réponse!
Est-ce que cela répond à votre question? Comment parcourir les lignes d'un DataFrame dans Pandas
Vous voulez donc savoir comment calculer ces valeurs?
Veuillez ne pas publier d'images de code / d'erreurs / de données. Publiez plutôt le code / les erreurs / les données sous forme de texte dans un bloc de code. Voir Comment poser une bonne question?