首页 > 解决方案 > 在 pandas 中使用 .at[ ] 和 .iat[ ] 访问器

问题描述

每当我在 jupyter notebook 控制台上迭代 pandas 系列以使用 set_value 修改值时,我都会得到这个 FutureWarning: set_value is deprecated 并将在未来的版本中删除。请改用 .at[] 或 .iat[] 访问器。

如何在循环中使用 .at[] 或 .iat[]?

s = pd.Series([100 , 120.0 , 101.0 , 3.0 ])
for l , v in s.iteritems():
    s.set_value(l, v + 4)

标签: pythonpandas

解决方案


你想要这样的东西:

In [14]: import pandas as pd

In [15]: s = pd.Series([100 , 120.0 , 101.0 , 3.0 ])
    ...:

In [16]: for l, v in s.iteritems():
    ...:     s.at[l] = v + 4
    ...:

In [17]: s
Out[17]:
0    104.0
1    124.0
2    105.0
3      7.0
dtype: float64

但是,这是非常不受欢迎的,相反,您应该始终更喜欢矢量化操作:

In [18]: s = pd.Series([100 , 120.0 , 101.0 , 3.0 ])
    ...:

In [19]: s += 4

In [20]: s
Out[20]:
0    104.0
1    124.0
2    105.0
3      7.0
dtype: float64

推荐阅读