簡體   English   中英

如何在python中用zip迭代二維數組的2個數據?

[英]How to iterate 2 data of 2-dimensional arrays with zip in python?

我有 2 個數據(datatrain 和 datatest),以 id、letter 和 answer 作為列:

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 的第一個字母,我想打印 data_train 的所有 groupby 字母。

打印結果(data_train.values):

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

打印(data_train.values)的預期結果:

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

如何使用 zip 迭代二維數組的 2 個數據? 我想同時實現朴素貝葉斯分類器,所以我不能在不同的循環中分離 datatrain 和 datatest 或在 datatrain 循環內嵌套 datatest 循環

如果你想在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() 的工作方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM