如何解决Isin Pandas中的ValueError

时间:2018-07-16 02:05:59

标签: python-3.x pandas

我想检查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().

任何人都可以说如何做。

1 个答案:

答案 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

enter image description here