如何在 python 中使用 zip 迭代二维数组的 2 个数据?



我有 2 个数据(数据训练和数据测试(,其中 id、字母和答案作为列:

import pandas as pd
datatrain = pd.DataFrame([[1,'A','Yes'],[2,'B','No'],[3,'C','Yes'],[4,'A','No'],[5,'B','Yes']], columns=['id','letter','answer'])
datatest = pd.DataFrame([[1,'B',''],[2,'B',''],[3,'B','']], columns=['id','letter','answer'])

当我使用 zip 迭代它们时...

for (no_train, data_train), (no_test, data_test) in zip(datatrain.groupby('letter'),datatest.groupby('letter')):
print(data_train.values)
print(data_test.values)
// bnb.fit(data_train['id','letter'], data_train['answer'])
// pred = bnb.predict(data_test['id','letter'])

print(data_test.values( 按预期工作,但我只会在 print(data_train.values 上得到 groupby 的第一个字母(,我想打印所有 groupby 字母data_train。

打印结果(data_train.值(:

[[1,'A','Yes']
[4,'A','No']]

打印的预期结果(data_train.值(:

[[1,'A','Yes']
[4,'A','No']]
[[2,'B','No']
[5,'B','Yes']]
[[3,'C','Yes']]

如何使用zip迭代二维数组的2个数据?我想同时实现朴素贝叶斯分类器,这样我就不能在不同的循环中分离数据训练和数据测试,或者在数据训练循环中嵌套数据测试循环

如果您希望data_train所有 3 种字母类型,请确保将这 3 种类型全部包含在数据测试

例如,这应该给出您的预期结果

import pandas as pd
datatrain = pd.DataFrame([[1,'A','Yes'],[2,'B','No'],[3,'C','Yes'],[4,'A','No'],[5,'B','Yes']], columns=['id','letter','answer'])
datatest = pd.DataFrame([[1,'B','xx'],[2,'B','xx'],[3,'B','xx'], [3,'A','yy'], [3,'C','yy']], columns=['id','letter','answer'])

for (no_train, data_train), (no_test, data_test) in zip(datatrain.groupby('letter'), datatest.groupby('letter')):
print(data_train.values)

结果:

[[1 'A' 'Yes']
[4 'A' 'No']]
[[2 'B' 'No']
[5 'B' 'Yes']]
[[3 'C' 'Yes']]

发生这种情况是因为 zip(( 的工作方式。

最新更新