data=pd.read_csv('D:/PythonKS/超市购买记录.txt',header=None) #print(data) record=['ID','西红柿','排骨','鸡蛋','茄子','袜子','酸奶','土豆','鞋子'] R=dict() for i in range(len(record)): x=np.zeros((len(data))) li=list() for k in range(len(data.iloc[0,:])): s=data.iloc[:,k]==record[i] li.extend(list(s[s.values==True].index)) x[li]=1 R.setdefault(record[i],x) Data=pd.DataFrame(R) print(Data),,为什么这段代码输出的布尔值全是0,怎么修改
时间: 2023-12-24 17:03:13 浏览: 63
快速解决pandas.read_csv()乱码的问题
5星 · 资源好评率100%
这段代码输出的布尔值全是0,是因为在创建 x 数组时,使用的是 np.zeros() 函数,该函数会创建一个全为0的数组。因此,x 数组的初始值全部为0,然后通过遍历 data 数据框的每一列,来查找是否有对应的 record 记录,如果有则将对应的 x 数组位置设置为1,否则不变。
如果要修改这段代码,可以将 np.zeros() 函数改为 np.ones() 函数,这样就能创建一个全为1的数组,然后再执行遍历和设置对应位置的操作。修改后的代码如下:
```python
data=pd.read_csv('D:/PythonKS/超市购买记录.txt',header=None)
record=['ID','西红柿','排骨','鸡蛋','茄子','袜子','酸奶','土豆','鞋子']
R=dict()
for i in range(len(record)):
x=np.ones((len(data))) # 将 np.zeros() 修改为 np.ones()
li=list()
for k in range(len(data.iloc[0,:])):
s=data.iloc[:,k]==record[i]
li.extend(list(s[s.values==True].index))
x[li]=1
R.setdefault(record[i],x)
Data=pd.DataFrame(R)
print(Data)
```
这样就能够正确输出布尔值了。
阅读全文