Python Pandas Dataframe有效地更新了值

时间:2016-04-07 17:55:52

标签: python performance pandas dataframe

这是实现以下目标的最快方法:

我正在使用Pandas Dataframe(NxN),我想迭代每一行和每个元素以检查元素是否大于行的意思。如果它更大,我想将元素值更改为1。

我使用以下方法计算平均值:

mean_value = df.ix[elementid].mean(axis=0)

但迭代每个元素并使用嵌套循环检查它是否为> = mean_value非常慢。

1 个答案:

答案 0 :(得分:6)

您可以先按行计算mean,然后与ge进行比较,mask添加1

print df
   a  b  c
0  0  1  2
1  0  1  2
2  1  1  2
3  1  0  1
4  1  1  2
5  0  0  1

mean_value = df.mean(axis=1)
print mean_value
0    1.000000
1    1.000000
2    1.333333
3    0.666667
4    1.333333
5    0.333333

mask = df.ge(mean_value, axis=0)
print mask
       a      b     c
0  False   True  True
1  False   True  True
2  False  False  True
3   True  False  True
4  False  False  True
5  False  False  True
print df.mask(mask, 1)
   a  b  c
0  0  1  1
1  0  1  1
2  1  1  1
3  1  0  1
4  1  1  1
5  0  0  1