有没有一种通用的、有效的方法将值赋给pandas中数据帧的子集?我有成百上千的行和列可以直接访问,但我还没有弄清楚如何编辑它们的值,而不必遍历每一行、每一列对。例如:
In [1]: import pandas, numpy
In [2]: array = numpy.arange(30).reshape(3,10)
In [3]: df = pandas.DataFrame(array, index=list("ABC"))
In [4]: df
Out[4]:
0 1 2 3 4 5 6 7 8 9
A 0 1 2 3 4 5 6 7 8 9
B 10 11 12 13 14 15 16 17 18 19
C 20 21 22 23 24 25 26 27 28 29
In [5]: rows = ['A','C']
In [6]: columns = [1,4,7]
In [7]: df[columns].ix[rows]
Out[7]:
1 4 7
A 1 4 7
C 21 24 27
In [8]: df[columns].ix[rows] = 900
In [9]: df
Out[9]:
0 1 2 3 4 5 6 7 8 9
A 0 1 2 3 4 5 6 7 8 9
B 10 11 12 13 14 15 16 17 18 19
C 20 21 22 23 24 25 26 27 28 29
我相信这里发生的是,我得到的是一个副本而不是一个视图,这意味着我无法分配给原始数据帧。这是我的问题吗?编辑这些行x列的最有效方法是什么(最好是在速度上,因为数据帧可能占用大量内存)?
另外,如果我想用形状正确的数据帧替换这些值呢?
在赋值表达式中使用^{} (
=
表示它与视图或副本无关!)以下内容:如果您使用的是0.11之前的版本,则可以使用
.ix
。作为@Jeff注释:
参见文档的'view versus copy'部分。
相关问题 更多 >
编程相关推荐