2017-06-19 3 views
2

ich einen Datenrahmen wie folgt haben:ersetzen Werte durch den Mittelwert

  Col1  Price 
1  Plastic  50 
2  Metal  100 
3  Plastic  40 

Ich möchte Werte in Col1 durch ihre Mittel in Preis ersetzen, so erhalte ich:

  Col1  Price 
1   45   50 
2  100  100 
3   45   40 

Ich habe schon did:

Aber ich weiß nicht, wie man die Werte ersetzt, vielleicht mit Karte?

Antwort

3

Sie sind Richtig- map verwendet werden kann, dies zu tun, wie so:

df['Col1'] = df['Col1'].map(df.groupby('Col1')['Price'].mean()) 
df 
    Col1 Price 
1 45  50 
2 100 100 
3 45  40 
+0

Ich mag Ihre an swer! :) +1 –

+0

@ScottBoston 1000 Möglichkeiten, eine Katze zu Haut wie sie sagen! ;) –

+0

Arbeitete Danke! – hdatas

3
df.assign(Col1=df.Col1.map(df.groupby('Col1').mean().squeeze())) 

Ausgang:

Col1 Price 
1 45  50 
2 100 100 
3 45  40 
2

Wenn Sie das Ergebnis direkt möchten, können Sie verwenden transform

df['Col1']=df.groupby(['Col1'])['Price'].transform('mean') 


    Col1 Price 
0 45  50 
1 100 100 
2 45  40 
Verwandte Themen