2016-10-26 3 views
1

Der Nachname von Mick Jagger fehlt in Daten. Nur der Faust Namen und den Namen der Band wurdenSo füllen Sie den fehlenden Datenrahmenwert, indem Sie einen Wert aus einer anderen Spalte kopieren

angegeben
import pandas as pd 

df = pd.DataFrame({ 'fist': ['John', 'Mick'], 
        'last':['Lennon', ''], 
        'band':['Beatles', 'Rolling Stones'] }) 

ich einen neuen Wert der fehlenden Feld leicht zuordnen können:

df['last'][df['last'] == ''] = 'Jagger' 

Aber statt einen neuen Wert ‚Jagger‘ zuweisen würde ich eher fülle es, indem du einen Wert aus der entsprechenden 'Band'-Spalte kopierst. So würde das Endergebnis aussehen wie:

   band fist   last 
0   Beatles John   Lennon 
1 Rolling Stones Mick Rolling Stones 

Wie erreichen Sie es?

Antwort

2

können Sie pandas.Series.where() verwenden, um bedingt Werte der aktuellen Serie von einer anderen Serie mit Werten zu ersetzen:

df['last'].where(df['last'] != "", df.band) 

#0   Lennon 
#1 Rolling Stones 
#Name: last, dtype: object 

df['last'] = df['last'].where(df['last'] != "", df.band) 
df 

# band   fist    last 
#0 Beatles   John   Lennon 
#1 Rolling Stones Mick Rolling Stones 
+0

Danke für 'df [ 'letzte'] = df ['last']. wo (df ['last']! = "", df.band) ' – alphanumeric

2

eine fehlende Daten normalerweise ein Werte NaN wäre, kein String. Also in dem Fall, dass Sie NaNs statt 'haben', können Sie tatsächlich eine andere column zum fillna() Methode übergeben:

import pandas as pd 
import numpy as np 
df = pd.DataFrame({ 'fist': ['John', 'Mick'], 
        'last':['Lennon', np.nan], 
        'band':['Beatles', 'Rolling Stones'] }) 
In[37]: df 
Out[37]: 
      band fist last 
0   Beatles John Lennon 
1 Rolling Stones Mick  NaN 

jetzt mit fillna()

df['last'].fillna(df.band, inplace=True) 
df 
Out[44]: 
      band fist   last 
0   Beatles John   Lennon 
1 Rolling Stones Mick Rolling Stones 
Verwandte Themen