我有这个数据框:
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