迭代熊猫中的行以匹配列中的值

时间:2018-07-13 16:11:22

标签: python pandas

我构建了一个字典应用程序,在其中使用了3列df1 DataFrame(英语-德语-西班牙语)。我需要遍历用户为英语提供值的每一列,并且他应该用西班牙语和德语发布相同的词。

我这样启动代码:

for w in df1.index:
  e = df1.loc[w]['English']
  print("Translate: " + e + "in German")
  d = input('')
  print("Now try Spanish\n")
  s = input('')

如何随机迭代以检查提供的输入是否与特定行中的值匹配?

更新:数据样本

| Deutsch            | Englisch        | Español        |
|--------------------|-----------------|----------------|
| bei meinen eltern  | with my paernts | con mis padres |
| zu Hause           | at home         | en casa        |
| stammen aus        | come from       | viene de       |
| ist in ... geboren | was born in     | nació en       |

1 个答案:

答案 0 :(得分:1)

如果您的数据集比实际要遍历的行数大得多(如果您有完整的单词词典,则很有可能),则可以使用

创建随机样本数据帧
df2 = df1.sample(frac = 0.1) # randomized sample, 10% of df1
df2 = df1.sample(frac=1) # randomized copy of all of df1

df2 = df1.sample(100) # randomized sample, 10 lines from df1

第一个参数将与用作参数的分数定义的df1的大小有关,第二个参数将是100行,而不管df1的大小如何。两者都是随机选择,随机排序的样本。

第二,您要遍历行。您正在按顺序将每一行传递给用户并等待输入。以下代码应该可以正常工作。

for idx,row in df2.iterrows(): 
    d = input("Translate: " + row.English + " in German")
    if d==row.German:
        print("Good!") # Or another case for successful translation
    else:
        print("The correct answer was "+row.German) # Or another case for incorrect translation
    s = input("Translate: " + row.English + " in Spanish")
    if s==row.Spanish:
        print("Good!")
    else:
        print("The correct answer was "+row.Spanish)