工作功能无法在应用程序内工作(产生"TypeError: 'int' object is not iterable")



我对python和panda比较陌生。我遇到了下列问题。

下面,当我在系列中使用test_fnc时,它是有效的,但当我通过series.apply(test_fnc)方法在系列中应用它时,我得到"TypeError: 'int' object is not iterable" error

代码:

import pandas as pd
series = pd.Series([1,2,4,777,5])
print(series)
test_fnc = lambda u: [-x if x==777 else x for x in u]
print(test_fnc(series))
series.apply(test_fnc)

输出:

0      1
1      2
2      4
3    777
4      5
dtype: int64
[1, 2, 4, -777, 5]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-77e41380f6db> in <module>
4 test_fnc = lambda u: [-x if x==777 else x for x in u]
5 print(test_fnc(series))
----> 6 series.apply(test_fnc)

您不应该在函数中进行迭代,apply已经在进行了。

相反,将函数定义为:test_fnc = lambda x: -x if x==777 else x

test_fnc = lambda x: -x if x==777 else x
series.apply(test_fnc)

输出:

0      1
1      2
2      4
3   -777
4      5
dtype: int64

如果这真的是要应用的函数,请使用矢量代码(就地修改(:

series.loc[series==777] *= -1

或用于新系列:

new = series.mask(series==777, -series)

相关内容

  • 没有找到相关文章

最新更新