Les Pandas - supprimer des colonnes
Je suis conscient que la suppression d'un dataframe de colonnes doit être aussi simple que:
df.drop(df.columns[1], axis=1)
une baisse de l'indice de
ou dr.dropna(axis=1, how='any')
à la baisse en fonction de si il contient NaN
s.
Mais aucun de ces travaux sur mon dataframe et je ne sais pas si c'est à cause d'un probléme de format ou le type de données d'émission ou d'une mauvaise utilisation ou une incompréhension de ces commandes.
Voici mon dataframe:
fish_frame after append new_column: 0 1 2 3 4 \
2 GBE COD NaN NaN 600 NaN
3 GBW COD NaN 11,189 NaN NaN
4 GOM COD NaN 0 NaN Package Deal - $40,753.69
5 POLLOCK NaN NaN 1,103 NaN
6 WHAKE NaN NaN 12 NaN
7 GBE HADDOCK NaN 10,730 NaN NaN
8 GBW HADDOCK NaN 64,147 NaN NaN
9 GOM HADDOCK NaN 0 NaN NaN
10 REDFISH NaN NaN 0 NaN
11 WITCH FLOUNDER NaN 370 NaN NaN
12 PLAICE NaN NaN 622 NaN
13 GB WINTER FLOUNDER 54,315 NaN NaN NaN
14 GOM WINTER FLOUNDER 653 NaN NaN NaN
15 SNEMA WINTER FLOUNDER 14,601 NaN NaN NaN
16 GB YELLOWTAIL NaN 1,663 NaN NaN
17 SNEMA YELLOWTAIL NaN 1,370 NaN NaN
18 CCGOM YELLOWTAIL 1,812 NaN NaN NaN
6 package_deal_column Package_Price new_column
2 NaN Package Deal - $40,753.69 None 600
3 NaN Package Deal - $40,753.69 None 11,1890
4 None Package Deal - $40,753.69 None 0
5 NaN Package Deal - $40,753.69 None 1,103
6 NaN Package Deal - $40,753.69 None 12
7 NaN Package Deal - $40,753.69 None 10,7300
8 NaN Package Deal - $40,753.69 None 64,1470
9 NaN Package Deal - $40,753.69 None 0
10 NaN Package Deal - $40,753.69 None 0
11 NaN Package Deal - $40,753.69 None 3700
12 NaN Package Deal - $40,753.69 None 622
13 None Package Deal - $40,753.69 None 54,31500
14 None Package Deal - $40,753.69 None 65300
15 None Package Deal - $40,753.69 None 14,60100
16 NaN Package Deal - $40,753.69 None 1,6630
17 NaN Package Deal - $40,753.69 None 1,3700
18 None Package Deal - $40,753.69 None 1,81200
Et puis j'ai les lignes de code suivantes:
fish_frame.drop(fish_frame.columns[1], axis=1)
fish_frame.drop(fish_frame.columns[2], axis=1)
fish_frame.drop(fish_frame.columns[3], axis=1)
fish_frame.drop(fish_frame.columns[4:5], axis=1)
#del fish_frame[4:5] #doesn't work, "TypeError: slice(4, 5, None) is an invalid key"
del fish_frame['Package_Price']
fish_frame.dropna(axis=1, how='any')
Et puis j'ai l'impression que le dataframe de nouveau et il s'en sort comme:
NEW fish_frame: 0 1 2 3 4 \
2 GBE COD NaN NaN 600 NaN
3 GBW COD NaN 11,189 NaN NaN
4 GOM COD NaN 0 NaN Package Deal - $40,753.69
5 POLLOCK NaN NaN 1,103 NaN
6 WHAKE NaN NaN 12 NaN
7 GBE HADDOCK NaN 10,730 NaN NaN
8 GBW HADDOCK NaN 64,147 NaN NaN
9 GOM HADDOCK NaN 0 NaN NaN
10 REDFISH NaN NaN 0 NaN
11 WITCH FLOUNDER NaN 370 NaN NaN
12 PLAICE NaN NaN 622 NaN
13 GB WINTER FLOUNDER 54,315 NaN NaN NaN
14 GOM WINTER FLOUNDER 653 NaN NaN NaN
15 SNEMA WINTER FLOUNDER 14,601 NaN NaN NaN
16 GB YELLOWTAIL NaN 1,663 NaN NaN
17 SNEMA YELLOWTAIL NaN 1,370 NaN NaN
18 CCGOM YELLOWTAIL 1,812 NaN NaN NaN
6 package_deal_column new_column
2 NaN Package Deal - $40,753.69 600
3 NaN Package Deal - $40,753.69 11,1890
4 None Package Deal - $40,753.69 0
5 NaN Package Deal - $40,753.69 1,103
6 NaN Package Deal - $40,753.69 12
7 NaN Package Deal - $40,753.69 10,7300
8 NaN Package Deal - $40,753.69 64,1470
9 NaN Package Deal - $40,753.69 0
10 NaN Package Deal - $40,753.69 0
11 NaN Package Deal - $40,753.69 3700
12 NaN Package Deal - $40,753.69 622
13 None Package Deal - $40,753.69 54,31500
14 None Package Deal - $40,753.69 65300
15 None Package Deal - $40,753.69 14,60100
16 NaN Package Deal - $40,753.69 1,6630
17 NaN Package Deal - $40,753.69 1,3700
18 None Package Deal - $40,753.69 1,81200
Ni les NaN
goutte de travail, ni la suppression de l'index de travail. Seul le drop[column name]
commande fonctionne mais je ne peux pas le faire pour chaque itération de ce script.
Je suis très confus et j'espère que ce n'est pas un très bête erreur, je suis en train de faire.
Aussi, j'ai moi-même ne comprenez pas cette information, mais l'impression fish_frame.info()
produit:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 17 entries, 2 to 18
Data columns (total 8 columns):
0 17 non-null object
1 4 non-null object
2 8 non-null object
3 5 non-null object
4 1 non-null object
6 0 non-null object
package_deal_column 17 non-null object
new_column 17 non-null object
dtypes: object(8)
memory usage: 586.0+ bytes
Toute l'aide pour résoudre ce serait apprécié, merci.
- vous avez besoin de déplacer de lieu ou de ré-affecter le résultat à une nouvelle df.
Vous devez vous connecter pour publier un commentaire.
Si il n'y a pas d'erreur, je n'en vois pas à partir de votre sortie, vous avez simplement oublié d'utiliser le
inplace
paramètre:fish_frame.drop(fish_frame.columns[1], axis=1, inplace=True)
,fish_frame.drop(fish_frame.columns[2], axis=1, inplace=True)
, etfish_frame.drop(fish_frame.columns[3], axis=1, inplace=True)
pour supprimer les colonnes 2, 3 et 4. Mais il supprimé les colonnes 2, 4 et 6...fish_frame.drop('name of column 1', axis=1, inplace=True)
fish_frame.columns[1]
n'est pas en passant d'un indice, son passage de la chaîne nom de la colonne. vous pouvez le vérifier en faisanttype(fish_frame.columns[1]
fish_frame.columns[1]
sélectionnez la deuxième colonne du dataframe en passant l'index. Comment puis-je sélectionner par index, si je le voulais?drop
. Ok je vais utiliser le nom exact des colonnes qui se trouvent être des nombres.1
:fish_frame.drop([1], axis=1, inplace=True)
5
est absent, mais c'est certainement un problème sur ma fin. Merci pour l'explication, si. J'ai besoin d'utiliserinplace=True
. Il s'avère que c'était une erreur stupide que j'étais inconscient.Voici quelques alternatives:
De l'installation:
Option 1:
Option 2:
Option 3:
Tous de retour:
Si vous essayez de déposer les colonnes avec NaN le code suivant suffit. Eh bien, je l'ai essayé moi-même et cela a fonctionné.