2016-07-06 5 views
1

Ich möchte einen Wert in einer bestimmten Zelle in einer pandas dataFrame setzen.Schneiden und Einstellen von Werten in Pandas, mit einer Zusammensetzung aus Position und Beschriftungen

Ich weiß, in welcher Position die Zeile ist (ich kann sogar die Zeile z. B. mit df.iloc[i] erhalten), und ich kenne den Namen der Spalte, aber ich kann nicht herausfinden, wie Sie die Zelle auswählen Ich kann einen Wert darauf setzen.

df.loc[i,'columnName']=val 

wird nicht funktionieren, weil ich die Zeile in Position i will, nicht mit dem Index i markiert. Auch

df.iloc[i, 'columnName'] = val 

offensichtlich nicht gerne einen Spaltennamen gegeben. Also, kurz vor der Konvertierung zu einem Diktat und zurück, wie gehe ich hier vor? Hilfe sehr geschätzt, da ich nichts finde, was mir in der pandas Dokumentation hilft.

+0

versuchen 'df.ix [i, 'columnName'] = val' – EdChum

+0

Gibt einen Schlüssel e rror von 'i', denke ich, weil' i' nicht in den Indexetiketten ist? –

+0

das sollte nicht fehlschlagen, versuche 'df ['columnName']. Iloc [i] = val' – EdChum

Antwort

1

Sie ix verwenden können, eine bestimmte Zelle zu setzen:

In [209]: 
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc')) 
df 

Out[209]: 
      a   b   c 
0 1.366340 1.643899 -0.264142 
1 0.052825 0.363385 0.024520 
2 0.526718 -0.230459 1.481025 
3 1.068833 -0.558976 0.812986 
4 0.208232 0.405090 0.704971 

In [210]: 
df.ix[1,'b'] = 0 
df 

Out[210]: 
      a   b   c 
0 1.366340 1.643899 -0.264142 
1 0.052825 0.000000 0.024520 
2 0.526718 -0.230459 1.481025 
3 1.068833 -0.558976 0.812986 
4 0.208232 0.405090 0.704971 

Sie können auch iloc auf dem col von Interesse nennen:

In [211]: 
df['b'].iloc[2] = 0 
df 

Out[211]: 
      a   b   c 
0 1.366340 1.643899 -0.264142 
1 0.052825 0.000000 0.024520 
2 0.526718 0.000000 1.481025 
3 1.068833 -0.558976 0.812986 
4 0.208232 0.405090 0.704971 
1

Sie können die Position der Säule mit get_loc erhalten:

df.iloc[i, df.columns.get_loc('columnName')] = val 
Verwandte Themen