Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过在列表之间映射值来创建列表_Python_Machine Learning_Decision Tree - Fatal编程技术网

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']