我想检查pandas列中的值是否包含特定值。 rc = 536510 1c6069a82417,536538 15e20b94cfde ... rc是一个数据框,其中包含一些building_id
if((train['building_id'].isin(rc))):
train['building_id'].apply('Strong')
else:
train['building_id'].apply('week')
它显示此错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
任何人都可以说如何做。
答案 0 :(得分:1)
以下代码应该可以工作。在这里,使用hashlib.md5()
创建随机ID。该代码检查train['building_id']
中是否存在rc['rc_id']
中的值。
导入库
import pandas as pd
import numpy as np
import hashlib
创建示例数据框
# Create sample dataframe - 1
rc= pd.DataFrame({'rc_id': abs(np.floor(np.random.randn(20)*1e4))})
rc['rc_id'] = rc.apply(lambda x: hashlib.md5(str(x['rc_id']).encode('utf-8')).hexdigest(), axis=1)
rc.head()
# Create sample dataframe - 2
rc2 = pd.DataFrame({'rc_id': abs(np.floor(np.random.randn(20)*1e4))})
rc2['rc_id'] = rc.apply(lambda x: hashlib.md5(str(x['rc_id']).encode('utf-8')).hexdigest(), axis=1)
rc2.head()
# Create dataframe train
train = rc.sample(n=10)
train = train.append(rc2.sample(n=10))
train.columns = ['building_id']
train = train.sample(frac=1)
train.head(2)
使用where()
子句检查匹配项
train['is_in_rc'] = np.where(train['building_id'].isin(rc['rc_id']), 'yes', 'no')
train