我正在使用Apply函数根据现有列[TV_TIC和ERRORS]值在数据帧中创建一个新列,即ERROR_TV_TIC。我不确定自己在做什么错。在某些情况下它可以工作,而在另一些情况下则不行,并引发错误。
数据框:
ERRORS|TV_TIC
|2.02101E+41
['Length of Underlying Symbol for Option Contract is exceeding allowed limits(10 chars)']|nan
['Future Option Indicator is missing']|nan
['Trade Id is missing', 'Future Option Indicator is missing']|nan
['Trade Id is missing', 'Future Option Indicator is missing']|nan
工作时的代码:
def validate_tv_tic(trades):
tv_tiv_errors = list()
if pd.isnull(trades['TV_TIC']):
tv_tiv_errors.append("Initial validations passed still TV_TIC missing")
if pd.notnull(trades['TV_TIC']) and len(trades['TV_TIC']) != 42:
tv_tiv_errors.append("Initial validations passed and TV_TIC is also generated but length is != 42 chars")
return tv_tiv_errors if len(tv_tiv_errors) > 0 else np.nan
trades['ERROR_TV_TIC'] = trades.apply(validate_tv_tic, axis=1)
无法正常工作时的代码:现在条件在系列的2列上,并且我确保我传递的是“&”而不是“ and”
def validate_tv_tic(trades):
tv_tiv_errors = list()
if pd.isnull(trades['ERRORS']) & pd.isnull(trades['TV_TIC']):
tv_tiv_errors.append("Initial validations passed still TV_TIC missing")
if pd.isnull(trades['ERRORS']) & pd.notnull(trades['TV_TIC']) & len(trades['TV_TIC']) != 42:
tv_tiv_errors.append("Initial validations passed and TV_TIC is also generated but length is != 42 chars")
return tv_tiv_errors if len(tv_tiv_errors) > 0 else np.nan
trades['ERROR_TV_TIC'] = trades.apply(validate_tv_tic, axis=1)
我得到的错误是:('具有多个元素的数组的真值不明确。请使用a.any()或a.all()','在索引3处发生)
我的直觉是说pd.isnull在某个地方引起问题,但不确定。
代码没有问题。数据框内的数据存在问题。
列ERRORS是字符串列表,当> 1作为列值存在时抛出错误。因此,我在第3行和第4行中遇到了错误
ERRORS
['Length of Underlying Symbol for Option Contract is exceeding allowed limits(10 chars)']
['Future Option Indicator is missing']
['Trade Id is missing', 'Future Option Indicator is missing']
['Trade Id is missing', 'Future Option Indicator is missing']
找到根本原因后,我将列表更改为字符串,其中元素之间用非逗号分隔,这对我有用。
更改了我的函数validate_tv_tiv的返回语句
return tv_tiv_errors if len(tv_tiv_errors) > 0 else np.nan
至
return ' & '.join(errors) if len(errors) > 0 else np.nan
这创建了我的数据框列ERRORS,如下所示:
ERRORS
Length of Underlying Symbol for Option Contract is exceeding allowed limits(10 chars)
Future Option Indicator is missing
Trade Id is missing & Future Option Indicator is missing
Trade Id is missing & Future Option Indicator is missing
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句