东风5
award_id_fain award_id_uri loan_no
1234 1234
12345678:4 12345678
我使用一个函数来捕获字符串中位于字符前面的部分。我有一个df,它的“award\u id\u uri”列是target值。给定12345678:4,我希望输出为12345678。我想我已经记下了语法,但是我得到了一个
"'str' object has no attribute 'str'"
错误消息。你知道吗
我目前的方法是声明一个函数,然后应用它。函数和调用如下。你知道吗
def loan_cap(row):
if pd.notnull(row['award_id_fain']):
loan_no = row['award_id_fain']
else: loan_no = row['award_id_uri'].str.split(':').str[0]
return loan_no
df5['loan_no'] = df5.apply(loan_cap, axis = 1)
我认为错误在于函数的str[0]部分。事先谢谢你的帮助。你知道吗
就这样吧。你知道吗
如其他注释所述,行[“award\u id\u uri”]将返回一个值,在您的情况下是一个字符串,因此您可以直接对其应用split函数。你知道吗
注
如果行['award\u id\u uri']不包含“:”则添加try/except块。你知道吗
我想你不需要这里的
.str
部分。它说它已经知道,它是str
。你知道吗尝试:
避免
apply
如果可能的话,试着从整个系列的角度来思考,而不是逐行思考。在这种情况下,可以使用fillna()
:输出:
相关问题 更多 >
编程相关推荐