使用特定项的值向pandas数据框添加新列?

时间:2013-03-29 13:30:44

标签: python pandas

我有这个pandas数据帧:

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

我在这里做错了什么?怎么做到呢?感谢。

1 个答案:

答案 0 :(得分: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