繁体   English   中英

检查 Pandas 列列表中的项目是否包含来自另一列的值

[英]Check if item from a Pandas column list contains value from another column

这是DF,

df = pd.DataFrame({'List': ['[7%, 9%, 30%]', '[9%, 30%]', '[7%]'], 'Value' :  ['7%', '0%', '7%']})

List            Value
[7%, 9%, 30%]   7%
[9%, 30%]       0%
[7%]            7% 

如何创建一个新列来检查值是否在列表列中预期的 output

List            Value  CTRL
[7%, 9%, 30%]   7%     True
[9%, 30%]       0%     False
[7%]            7%     True

尝试的事情没有成功..

df['CTRL'] = np.where([item for item in df['List']] == df['Value'], True, False)

您需要在这里循环,列表推导应该是最有效的:

df['CTRL'] = [v in l.strip('[]').split(',')
              for l,v in zip(df['List'], df['Value'])]

或者,您有列表(不是问题中的字符串):

df['CTRL'] = [v in l for l,v in zip(df['List'], df['Value'])]

output:

            List Value   CTRL
0  [7%, 9%, 30%]    7%   True
1      [9%, 30%]    0%  False
2           [7%]    7%   True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM