我已经创建了一个Pandas数据框
df = DataFrame(index=['A','B','C'], columns=['x','y'])
得到了这个
x y
A NaN NaN
B NaN NaN
C NaN NaN
然后我想给特定的单元格赋值,例如行“C”和列“x”。
我期望得到这样的结果:
x y
A NaN NaN
B NaN NaN
C 10 NaN
使用此代码:
df.xs('C')['x'] = 10
但是df
的内容没有改变。在DataFrame中也只有NaN
s。
有什么建议吗?
Tags:
RukTech's answer,
df.set_value('C', 'x', 10)
比我下面建议的选项快得多。然而,它一直是slated for deprecation。向前看,recommended method is ^{} 。
为什么
df.xs('C')['x']=10
不起作用:df.xs('C')
默认情况下,返回数据的新数据帧,因此仅修改此新数据框。
df['x']
返回数据帧的视图,因此修改
df
本身。警告:有时很难预测操作是否返回副本或视图。因此docs recommend avoiding assignments with "chained indexing"。
所以推荐的替代方案是
它可以修改
df
。更新:
.set_value
方法将是deprecated。.iat/.at
是很好的替代品,不幸的是,pandas很少提供文档最快的方法是使用set_value。这种方法比
.ix
方法快约100倍。例如:df.set_value('C', 'x', 10)
也可以使用
.loc
进行条件查找,如下所示:其中
<some_column_name
是要检查<condition>
变量的列,而<another_column_name>
是要添加到的列(可以是新列或已存在的列)。<value_to_add>
是要添加到该列/行的值。这个例子并不能很好地解决手头的问题,但是对于希望根据条件添加特定值的人来说,它可能是有用的。
相关问题 更多 >
编程相关推荐