有没有一种通用的、有效的方法来为 Pandas 中的 DataFrame 的子集分配值?我有数百行和列可以直接访问,但我还没有设法弄清楚如何在不遍历每一行、列对的情况下编辑它们的值。例如:
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
我相信这里发生的事情是我得到的是副本而不是视图,这意味着我无法分配给原始 DataFrame。那是我的问题吗?编辑这些行 x 列的最有效方法是什么(最好是同步的,因为 DataFrame 可能会占用大量内存)?
另外,如果我想用正确形状的 DataFrame 替换这些值怎么办?