我只想更改数据框中特定单元格中的值,然后使用set_value。但是,每次我使用set_value时,它都会列出整个数据帧一次。由于数据帧具有较大的大小(超过1000万行),因此该过程将浪费能量和时间。 平台:Spyder(Python 2.7)
感谢建议!
答案 0 :(得分:1)
是你想要的吗?
In [69]: df
Out[69]:
a b c
0 8 6 2
1 9 9 6
2 1 7 9
3 9 0 6
4 0 6 7
5 9 3 4
6 4 6 5
7 8 3 4
8 0 8 9
9 7 2 8
In [70]: df.ix[5, 'a'] = 100
In [71]: df
Out[71]:
a b c
0 8 6 2
1 9 9 6
2 1 7 9
3 9 0 6
4 0 6 7
5 100 3 4
6 4 6 5
7 8 3 4
8 0 8 9
9 7 2 8
而不是:
In [72]: df.set_value(9, 'a', 100)
Out[72]:
a b c
0 8 6 2
1 9 9 6
2 1 7 9
3 9 0 6
4 0 6 7
5 100 3 4
6 4 6 5
7 8 3 4
8 0 8 9
9 100 2 8
你也可以这样做:
In [73]: df = df.set_value(9, 'a', 100)
答案 1 :(得分:1)
set_value
非常快。交互式会话的长时间是准备输出的时间。
In [130]: %timeit u.set_value(0,0,3)
10000 loops, best of 3: 41.9 µs per loop
In [131]: %timeit u.ix[0,0]=2
1000 loops, best of 3: 745 µs per loop
第二种方法阻止显示。