2017-07-19 1 views
0
for x in range(1,17): 
    df.loc[(df[x]=='n'), (x)]=float(0.0) 
    df.loc[(df[x]=='y'), (x)]=float(1.0) 
    df.loc[(df[x]=='?'), (x)]=np.nan 

df.dtypes 

Renvoie tous les objets. Pourquoi est-ce quand je règle spécifiquement chaque élément à un flotteur 0 ou 1 ou un NaN. Fondamentalement, je suis incapable d'exécuter des moyens de colonne sur cette base de données en conséquence.Définition de chaque valeur sur un flottant, mais renvoi d'un objet dans les pandas

+0

Je ne ai pas besoin de réinitialiser l'index bien. Cela a à voir avec les colonnes qui prennent toutes la valeur de l'objet au lieu de float64. J'ai trouvé un travail autour, mais il ne répond toujours pas pourquoi le ci-dessus produit tous les objets. – a1letterword

Répondre

1
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/voting-records/house-votes-84.data' 
df = pd.read_csv(url, header=None, index_col=0) 
df[df.eq('?')] = np.nan 
df[df.eq('y')] = 1.0 
df[df.eq('n')] = 0.0 
df = df.reset_index() 

Résultat:

In [67]: df 
Out[67]: 
      0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
0 republican 0 1 0 1 1 1 0 0 0 1 NaN 1 1 1 0 1 
1 republican 0 1 0 1 1 1 0 0 0 0 0 1 1 1 0 NaN 
2  democrat NaN 1 1 NaN 1 1 0 0 0 0 1 0 1 1 0 0 
3  democrat 0 1 1 0 NaN 1 0 0 0 0 1 0 1 0 0 1 
4  democrat 1 1 1 0 1 1 0 0 0 0 1 NaN 1 1 1 1 
5  democrat 0 1 1 0 1 1 0 0 0 0 0 0 1 1 1 1 
6  democrat 0 1 0 1 1 1 0 0 0 0 0 0 NaN 1 1 1 
7 republican 0 1 0 1 1 1 0 0 0 0 0 0 1 1 NaN 1 
8 republican 0 1 0 1 1 1 0 0 0 0 0 1 1 1 0 1 
9  democrat 1 1 1 0 0 0 1 1 1 0 0 0 0 0 NaN NaN 
..   ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... 
425 democrat 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 NaN 
426 democrat 1 0 1 0 0 0 1 1 1 1 0 0 0 0 1 1 
427 republican 0 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 
428 democrat NaN NaN NaN 0 0 0 1 1 1 1 0 0 1 0 1 1 
429 democrat 1 0 1 0 NaN 0 1 1 1 1 0 1 0 NaN 1 1 
430 republican 0 0 1 1 1 1 0 0 1 1 0 1 1 1 0 1 
431 democrat 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 1 
432 republican 0 NaN 0 1 1 1 0 0 0 0 1 1 1 1 0 1 
433 republican 0 0 0 1 1 1 NaN NaN NaN NaN 0 1 1 1 0 1 
434 republican 0 1 0 1 1 1 0 0 0 1 0 1 1 1 NaN 0 

[435 rows x 17 columns] 
+1

manque un '='? – Wen

+0

@Wen, merci! – MaxU

+1

Une telle solution rapide +1 – Wen