2017-05-09 7 views
2

Ich habe einen Datenrahmen wie:Wie verwende ich ein Tupel um den Datenrahmen zu füllen?

>>> df = pd.DataFrame(index=[1,2,3,4], columns=[1,2,3,4]) 
>>> df 
    1 2 3 4 
1 NaN NaN NaN NaN 
2 NaN NaN NaN NaN 
3 NaN NaN NaN NaN 
4 NaN NaN NaN NaN 
>>> 

Und eine Liste von Tupeln als „Koordinaten“ zu verwenden. Einer der Tupel, zum Beispiel:

(2,4) 

Ich möchte 1 in diese Position des Datenrahmens ein:

 1 2 3 4 
1 NaN NaN NaN NaN 
2 NaN NaN NaN 1 
3 NaN NaN NaN NaN 
4 NaN NaN NaN NaN 

Wie kann ich das tun?

+0

Mögliches Duplikat von [Pandas - wie man auf Zellen in Pandas zugreift, äquivalent zu df \ [3,4 \] in R] (http://stackoverflow.com/questions/21393489/pandas-how-to-access-cell- in-pandas-äquivalent-von-df3-4-in-r) –

Antwort

2

Verwenden loc:

tup = (2,4) 
df.loc[tup] = 1 
print (df) 
    1 2 3 4 
1 NaN NaN NaN NaN 
2 NaN NaN NaN 1 
3 NaN NaN NaN NaN 
4 NaN NaN NaN NaN 

Eine andere Lösung mit set_value:

df.set_value(tup[0], tup[1], 1) 
print (df) 
    1 2 3 4 
1 NaN NaN NaN NaN 
2 NaN NaN NaN 1 
3 NaN NaN NaN NaN 
4 NaN NaN NaN NaN 

Oder get_loc für Position und indexcolumns Werte und auf numpy array durch values erstellt:

df.values[df.index.get_loc(tup[0]), df.columns.get_loc(tup[1])] = 1 
print (df) 
    1 2 3 4 
1 NaN NaN NaN NaN 
2 NaN NaN NaN 1 
3 NaN NaN NaN NaN 
4 NaN NaN NaN NaN 
+0

Das ist großartig. Am Ende habe ich den "df.loc" dazu benutzt; 'für tup in Daten: ... df.loc [tup] = 1' –

Verwandte Themen