Supprimer les caractères spéciaux dans les pandas dataframe
Ce qui semble être une intrinsèquement tâche simple, mais je trouve qu'il est très difficile d'enlever le ' " de toute ma trame de données et de retourner les valeurs numériques de chaque colonne, y compris les numéros qui n'ont pas de ''. Le dateframe comprend des centaines de colonnes et ressemble à ceci en bref:
Time A1 A2
2.0002546296 1499 1592
2.0006712963 1252 1459
2.0902546296 1731 2223
2.0906828704 1691 1904
2.1742245370 2364 3121
2.1764699074 2096 1942
2.7654050926 *7639* *8196*
2.7658564815 *7088* *7542*
2.9048958333 *8736* *8459*
2.9053125000 *7778* *7704*
2.9807175926 *6612* *6593*
3.0585763889 *8520* *9122*
Je n'ai pas écrit ça pour itérer sur chaque colonne dans le df encore mais autant que la première colonne va je suis venu avec cette
df['A1'].str.replace('*','').astype(float)
qui donne
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
15 NaN
16 NaN
17 NaN
18 NaN
19 7639.0
20 7088.0
21 8736.0
22 7778.0
23 6612.0
24 8520.0
Est-il un moyen très facile d'enlever les '*' dans le dataframe dans les pandas?
OriginalL'auteur RageQuilt | 2016-07-09
Vous devez vous connecter pour publier un commentaire.
utilisation remplacer qui s'applique sur l'ensemble du dataframe :
df = df.astype(float)
après le remplacer et que vous l'avez. J'aimerais passerinplace
et il suffit de fairedf = df.replace('\*', '', regex=True).astype(float)
.est-ce une mauvaise pratique à l'aide de
inplace
.Pas de. Juste une préférence. Dans ce cas, lorsque vous avez utilisé inplace il n'en revient pas lui-même tenant compte de l'enchaînement. Sans elle, j'ai été capable de la chaîne d'astype(float)
OriginalL'auteur shivsn
Il y a une autre solution qui utilise la carte et de la bande de fonctions.
Vous pouvez voir le lien ci-dessous:
Les Pandas DataFrame: supprimer les parties indésirables de chaînes de caractères dans une colonne.
L'analyse de la procédure sera appliquée uniquement sur les colonnes souhaitées.
OriginalL'auteur amin
J'ai trouvé ceci pour être une approche simple - Utiliser
replace
pour ne conserver que les chiffres (etdot
etminus
signe).Cela permettrait de supprimer des caractères, des alphabets ou tout ce qui n'est pas défini dans
to_replace
attribut.Donc, la solution est:
df['A1'].replace(regex=True, inplace=True, to_replace=r'[^0-9.\-]', value=r'']
df['A1'] = df['A1'].astype(float64)
OriginalL'auteur CuriousCoder