提问人:dls2235 提问时间:1/25/2023 最后编辑:dls2235 更新时间:1/25/2023 访问量:56
尝试将列表中的值与字符串进行比较,以确定它们是否匹配
Attempting to compare values in a list to a string to determine if they match
问:
我正在尝试将字符串中的值与列表中的值进行比较。如果值匹配,则用 1 或 0 添加第三个列表。
当前尝试检查 2 个字符串中的每个值。如果字符串中的条目匹配,则在第三个字符串(0 或 1)中统计哈希标记。我无法使比较函数工作 - 它没有返回任何值。
最近编辑:我无法链接到作业页面,但我可以发布问题的图片。
代码如下:
> #list values
landing_outcomes =['True ASDS 41\nNone None 19\nTrue RTLS 14\nFalse ASDS 6\nTrue Ocean 5\nFalse Ocean 2\nNone ASDS 2\nFalse RTLS 1\nName: Outcome, dtype: int64']
> #string values
bad_outcomes = {'False ASDS', 'False Ocean', 'False RTLS', 'None ASDS', 'None None'}
landing_class = []
> #comparison
if any (x in [landing_outcomes] for x in [bad_outcomes]):
landing_class += 0
else:
landing_class += 1
print (landing_class)
答:
0赞
MatBailie
1/25/2023
#1
根据您的编辑(您添加的图像)...
landing_outcomes
是 pandas 系列(数据帧中的一列)- 其索引是结果列表
- 您想要根据集合检查数据帧
- 这与你的问题相反
import pandas as pd
landing_outcomes = pd.Series(
[41, 19, 14, 6, 5, 2, 2, 1],
index=['True ASDS', 'None None', 'True RTLS', 'False ASDS', 'True Ocean', 'False Ocean', 'None ASDS', 'False RTLS'],
name='Outcome'
)
bad_outcomes = {'False ASDS', 'False Ocean', 'False RTLS', 'None ASDS', 'None None'}
print()
print(landing_outcomes)
print()
print(bad_outcomes)
landing_class = (~landing_outcomes.index.isin(bad_outcomes)).astype(int).tolist()
print()
print(landing_class)
该 Series 对象具有一个方法,该方法在每一行上返回一个 True 或 False 的新 Series。isin()
使用反转布尔值(因此给出“不在”的结果)。~
将布尔值转换为整数 (with ) 会将这些布尔值转换为 1 和 0。astype
然后将 pandas 系列变成一个常规的 python 列表。tolist()
下一个:比较字符变量
评论
if any (x in [landing_outcomes] for x in [bad_outcomes])
landing_outcomes已经是一个列表。你不需要额外的东西。bad_outcomes也一样。[ ]
landing_outcomes
in
[ ]
landing_outcomes
list
landing_class += 0
此外,这不是将零添加到列表的正确方法。