Python 创建循环以遍历具有相同变量名的不同数据集以更改值
我有4个数据集,分别命名为cluster_1、cluster_2、cluster_3、cluster_4。我想循环所有4个变量,并将变量的值更改为二进制,因此,如果它们大于或等于1,则设置为1,如果为0,则设置为0。所有数据集都有相同的变量名 在运行代码时,我不断发现错误“float”对象不可编辑。 binary是变量名列表,clusti是数据集列表Python 创建循环以遍历具有相同变量名的不同数据集以更改值,python,loops,Python,Loops,我有4个数据集,分别命名为cluster_1、cluster_2、cluster_3、cluster_4。我想循环所有4个变量,并将变量的值更改为二进制,因此,如果它们大于或等于1,则设置为1,如果为0,则设置为0。所有数据集都有相同的变量名 在运行代码时,我不断发现错误“float”对象不可编辑。 binary是变量名列表,clusti是数据集列表 for i in binary: print(dataset[i]) dataset[i] = datas
for i in binary:
print(dataset[i])
dataset[i] = dataset[i].apply(lambda x: [y if y== 0 else 1 for y in x]) ```
试着用理解来做这件事 鉴于您上面的代码,
数据集的结构有两种不同的情况:
它是一个列表列表,例如:
数据集=[
[0,1,2,3],
[1,2,3,4],
[0,0,2,1],
[1,0,1,0]
]
这是一个关键的列表,例如:
数据集={
'簇_1':[0,1,2,3],
'簇2':[1,2,3,4],
'簇_3':[0,0,2,1],
'簇4':[1,0,1,0]
}
案例1:如果您的数据集是一个列表列表,您可以通过列表理解来实现这一点:
dataset = [[int(y != 0) for y in x] for x in dataset]
dataset = {key: [int(y != 0) for y in val] for key, val in dataset.items()}
这样做的目的是创建一个列表列表:
外部列表理解[█ 对于数据集中的x]
评估为对数据集中的每个列表x
的理解
内部列表理解[█ 对于x中的y]
计算列表中的每个值y
表达式int(y!=0)
是三元表达式y(如果y==0,则为1)的简化,因为三元表达式在Python中很笨重<代码>y=如果y==0,则0
将导致布尔值False
,否则True
。将其转换为int()
将产生与三元逻辑相同的输出(0
如果y是0
,或者在所有其他情况下是1
)
完整示例:
dataset = [
[0,1,2,3],
[1,2,3,4],
[0,0,2,1],
[1,0,1,0]
]
dataset = [[int(y != 0) for y in x] for x in dataset]
print(dataset)
dataset = {
'cluster_1': [0,1,2,3],
'cluster_2': [1,2,3,4],
'cluster_3': [0,0,2,1],
'cluster_4': [1,0,1,0]
}
dataset = {key: [int(y != 0) for y in val] for key, val in dataset.items()}
print(dataset)
收益率:
[0,1,1,1],[1,1,1,1]]
案例2:如果数据集
是一个dict,您可以使用dict理解:
dataset = [[int(y != 0) for y in x] for x in dataset]
dataset = {key: [int(y != 0) for y in val] for key, val in dataset.items()}
完整示例:
dataset = [
[0,1,2,3],
[1,2,3,4],
[0,0,2,1],
[1,0,1,0]
]
dataset = [[int(y != 0) for y in x] for x in dataset]
print(dataset)
dataset = {
'cluster_1': [0,1,2,3],
'cluster_2': [1,2,3,4],
'cluster_3': [0,0,2,1],
'cluster_4': [1,0,1,0]
}
dataset = {key: [int(y != 0) for y in val] for key, val in dataset.items()}
print(dataset)
收益率:
{'cluster_1':[0,1,1,1],'cluster_2':[1,1,1],'cluster_3':[0,0,1,1],'cluster_4':[1,0,1,0]}
数据集[i]的输出是什么?数据集的类型是什么?Python内置没有这样的东西。如果您正在使用某个框架,请相应地标记您的问题。可能应该解释int(y!=0)
的作用,因为它不明显。int(y!=0)
的解释是一种改进,但是-很抱歉这么迂腐-一些代码片段的格式丢失了,我不确定如何处理这些█代码>字符。@martineau块字符表示被解释部分排除的其他代码。