我有这个数据框:

   cnpj             Porte
0  453232000125
1  11543123000156
2  345676
3  121234561023456


“ cnpj”当前为float。

如果cnpj中包含“ 0001”,我想将“ Porte”分类为A。因此,它看起来像这样:

   cnpj             Porte
0  453232000125     A
1  11543123000156   A
2  345676
3  121234561023456


我尝试着:

 df['Porte'].loc[(df['cnpj'].astype(int).astype(str).str.contains('0001'))]='A'


但这让我遇到这个错误:

TypeError: cannot convert the series to <class 'int'>


我该怎么办?

最佳答案

这是一种方法。

演示:

import pandas as pd
import numpy as np
df = pd.DataFrame({"cnpj": [453232000125, 11543123000156, 345676]})
df["Porte"] = df["cnpj"].apply(lambda x: "A" if '0001' in str(x) else np.nan)
print(df)


输出:

             cnpj Porte
0    453232000125     A
1  11543123000156     A
2          345676   NaN

10-06 13:34