J'essaie d'extraire uniquement des numéros de surface d'une colonne de Pandas Dataframe: 568 SQ MI (1 471 km2) Ici, je veux seulement 568 L'espace entre le nombre et le SQ est un espace incassable. P>
3 Réponses :
Vous pouvez probablement faire cela
df[col].apply(lambda x:x[:3])
Merci beaucoup, mais cette colonne du Dataframe a deux autres valeurs qui inclut des périodes ou des virgules Les deux autres valeurs sont de 1 179 m² (3 054 km2) et de 61,9 m² (160 km2)
Vous pouvez trouver la table mentionnée dans ce lien en.wikipedia.org/wiki/list_of_counties_in_missouri
Pour cela, vous pouvez utiliser cela, bien qu'il doit y avoir une solution plus grande que cela pourrait faire fonctionner le travail. df [col] .Apply (lambda x: x.split ("SQ") [0] .replace ("", "")) (remplacez le nom avec votre DF et votre col avec votre col)
Essayez donc d'utiliser regex sur la chaîne.
par exemple: p> sortie: p> def fmt(row):
number = re.findall(r"[0-9,.]+",row)
return number[0]
numbers = list(map(fmt,df[col]))
df['fmt area'] = numbers
Merci beaucoup, mais cette colonne du Dataframe a deux autres valeurs qui inclut des périodes ou des virgules Les deux autres valeurs sont de 1 179 m² (3 054 km2) et de 61,9 m² (160 km2)
Vous pouvez trouver la table mentionnée dans ce lien en.wikipedia.org/wiki/list_of_counties_in_missouri
Changer la regex à r "[0-9 ,.]"
Vous pouvez utiliser la méthode .str la méthode et utiliser l'extrait et passer un motif d'expression régulier.
import pandas as pd
df = pd.DataFrame({"Area":["568 sq mi (1,471 km2)"]})
df["area changed"] = df.Area.str.extract(r"(\d+ \w+)")
Merci beaucoup, mais cette colonne du Dataframe a deux autres valeurs qui inclut des périodes ou des virgules Les deux autres valeurs sont de 1 179 m² (3 054 km2) et de 61,9 m² (160 km2)
Je veux seulement 568 L'espace entre le nombre et le SQ est un espace incassable. Code> Que signifie-t-il?