2013-03-29 10 views
6

Ich habe diesen Pandas Datenrahmen:Hinzufügen einer neuen Spalte zu Pandas Datenrahmen mit Werten für bestimmte Gegenstände?

d=pandas.DataFrame([{"a": 1}, {"a": 3, "b": 2}]) 

und ich versuche, eine neue Spalte mit Nicht-Null-Werten nur für bestimmte Zeilen hinzufügen, basierend auf ihrem numerischen Indizes im Array. beispielsweise das Hinzufügen einer neuen Spalte „c“ nur auf die erste Zeile in d:

# array of row indices 
indx = np.array([0]) 
d.ix[indx]["c"] = "foo" 

der sollte für die erste Reihe, und NaN für alle anderen Zeilen „foo“, wie der Spalte „c“ Wert hinzufügen. aber das scheint das Array nicht zu ändern:

d.ix[np.array([0])]["c"] = "foo" 
In [18]: d 
Out[18]: 
    a b 
0 1 NaN 
1 3 2 

was mache ich hier falsch? Wie kann es gemacht werden? Vielen Dank.

+0

Wenn dies so etwas wie ein numpy Array ist, sollte dies nicht homogen sein? – dusual

+0

Es ist sehr gut möglich, ein Pandas df mit einer Mischung aus String-Werten und NaN-Werten zu haben – user248237dfsf

Antwort

6
In [11]: df = pd.DataFrame([{"a": 1}, {"a": 3, "b": 2}]) 

In [12]: df['c'] = np.array(['foo',np.nan]) 

In [13]: df 
Out[13]: 
    a b c 
0 1 NaN foo 
1 3 2 nan 

Wenn Sie wurden einen numerischen Wert zuweisen, würde die folgende Arbeit

In [16]: df['c'] = np.nan 

In [17]: df.ix[0,'c'] = 1 

In [18]: df 
Out[18]: 
    a b c 
0 1 NaN 1 
1 3 2 NaN 
+0

Ich wusste, es würde funktionieren, wenn ich 'df ['c']' ein ganzes Array zuweisen würde, aber gibt es keine Möglichkeit, nur bestimmte Elemente zuzuweisen habe es folge den Rest sind 'NaN'? Es sieht so aus, als müsste ich explizit ein Array der Größe 'len (df)' mit nans und non-values ​​erstellen ... – user248237dfsf

+0

'' df ['c']. Update (pd.Series (['foo'], index = [0])) '' sollte funktionieren, aber das ist jetzt ein Fehler, wenn Ihre Zuweisungen numerisch sind, dann können Sie einfach mein zweites Beispiel verwenden – Jeff

+0

danke. Sie sind nicht numerisch, also bleibe ich einfach beim manuellen Erstellen des gesamten Arrays – user248237dfsf

Verwandte Themen