2013-03-29 38 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

相关问题