2013-03-29 62 views
6

我有這樣的熊貓數據框:使用特定項目的值向熊貓數據框添加新列?

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

,我嘗試將新列添加到它僅適用於特定行非空值,基於陣列在他們的數字指標。例如,添加新的列「C」只向第一行中d

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

應添加「foo」的作爲第一行的列的「c」值和NaN對於所有其他的行。但這似乎並沒有改變陣列:

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

我在做什麼錯在這裏?如何做呢?謝謝。

+0

如果這就像一個numpy的數組什麼,應該不是這個是均勻的? – dusual

+0

非常有可能有一個字符串值和NaN值混合的熊貓df – user248237dfsf

回答

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 

如果你分配一個數值,下面將工作

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

我知道如果我將整個數組分配給'df ['c']',但是沒有辦法只分配特定的元素,它推斷其餘的是'NaN'?它看起來像我必須明確地構造一個大小爲'len(df)'的數組,其中nans和non-values ... – user248237dfsf

+0

''df ['c'] .update(pd.Series(['foo'],index =')''應該可以工作,但現在這是一個錯誤,如果你的任務是數值,那麼你可以使用我的第二個例子 – Jeff

+0

謝謝。他們不是數字,所以我只是堅持手動構建整個數組 – user248237dfsf

相關問題