Python 通过在列表之间映射值来创建列表
我有以下两个列表:Python 通过在列表之间映射值来创建列表,python,machine-learning,decision-tree,Python,Machine Learning,Decision Tree,我有以下两个列表:X\u列车和y\u列车。我想退回四张名单。第一个包含来自X\u train的行,这些行具有outlook==cloud,第二个包含这些行的标签。第三个和第四个列表应该包含相同的内容,但是对于具有不同outlook的行 X_train = [['sunny', 'hot', 'high', 'FALSE'], ['sunny', 'hot', 'high', 'TRUE'], ['overcast', 'hot', 'high', 'FALSE'], ['rainy', '
X\u列车
和y\u列车
。我想退回四张名单。第一个包含来自X\u train
的行,这些行具有outlook==cloud
,第二个包含这些行的标签。第三个和第四个列表应该包含相同的内容,但是对于具有不同outlook的行
X_train = [['sunny', 'hot', 'high', 'FALSE'],
['sunny', 'hot', 'high', 'TRUE'],
['overcast', 'hot', 'high', 'FALSE'],
['rainy', 'mild', 'high', 'FALSE'],
['rainy', 'cool', 'normal', 'FALSE'],
['rainy', 'cool', 'normal', 'TRUE'],
['overcast', 'cool', 'normal', 'TRUE'],
['sunny', 'mild', 'high', 'FALSE'],
['sunny', 'cool', 'normal', 'FALSE'],
['rainy', 'mild', 'normal', 'FALSE'],
['sunny', 'mild', 'normal', 'TRUE'],
['overcast', 'mild', 'high', 'TRUE'],
['overcast', 'hot', 'normal', 'FALSE'],
['rainy', 'mild', 'high', 'TRUE']]
y_train = ['no', 'no', 'yes', 'yes', 'yes', 'no', 'yes', 'no', 'yes', 'yes', 'yes', 'yes', 'yes', 'no']
我的代码如下:
overcast=[]
for row in X_train:
if 'overcast' in row:
overcast+=[row]
cloud
列表的输出为:
[['overcast', 'hot', 'high', 'FALSE'],
['overcast', 'cool', 'normal', 'TRUE'],
['overcast', 'mild', 'high', 'TRUE'],
['overcast', 'hot', 'normal', 'FALSE']]
我的预期产出是:
([['sunny', 'hot', 'high', 'FALSE'],
['sunny', 'hot', 'high', 'TRUE'],
['rainy', 'mild', 'high', 'FALSE'],
['rainy', 'cool', 'normal', 'FALSE'],
['rainy', 'cool', 'normal', 'TRUE'],
['sunny', 'mild', 'high', 'FALSE'],
['sunny', 'cool', 'normal', 'FALSE'],
['rainy', 'mild', 'normal', 'FALSE'],
['sunny', 'mild', 'normal', 'TRUE'],
['rainy', 'mild', 'high', 'TRUE']],
['no', 'no', 'yes', 'yes', 'no', 'no', 'yes', 'yes', 'yes', 'no'],
[['overcast', 'hot', 'high', 'FALSE'],
['overcast', 'cool', 'normal', 'TRUE'],
['overcast', 'mild', 'high', 'TRUE'],
['overcast', 'hot', 'normal', 'FALSE']],
['yes', 'yes', 'yes', 'yes'])
现在我被困在如何附加标签“yes
”和“no
”对应于“cloud
”集合,应该是四个“yes
”。
有什么想法可以帮我吗,谢谢 每当您想要过滤或转换这样的表格数据时,都非常方便,例如:
将熊猫作为pd导入
df=pd.DataFrame(X_列,列=['outlook','temperature','pressure','Boole']))
df['y']=y_列
df[df.outlook==“阴天”]
如果必须返回列表,则可以将数据帧强制转换为嵌套列表,如下所示:
df[df.outlook=='cloud'].drop('y',axis=1.values.tolist()
或标签:
df.y[df.outlook=='cloud'].values.tolist()
对于更基本的方法,您可以使用列表理解,例如:
#从X_列中提取第一列
outlook=[X\U列中的行的行[0]
#创建一个布尔列表
outlook_是_阴天=[x==outlook中x的“阴天”]
#获取x为阴的y值
[y_train[i]对于范围内的i(len(y_train)),如果前景是阴天[i]]
这是可能的解决办法。谢谢,但我想返回4个列表。我添加了一种在底部获取列表的方法。
outlook temperature pressure Boole y
2 overcast hot high FALSE yes
6 overcast cool normal TRUE yes
11 overcast mild high TRUE yes
12 overcast hot normal FALSE yes
[['overcast', 'hot', 'high', 'FALSE'],
['overcast', 'cool', 'normal', 'TRUE'],
['overcast', 'mild', 'high', 'TRUE'],
['overcast', 'hot', 'normal', 'FALSE']]
['yes', 'yes', 'yes', 'yes']
['yes', 'yes', 'yes', 'yes']