2017-12-20 2 views
1

Ich versuche zu vergleichen, ob eine Zeile in meinem Dataframe als einen bestimmten Wert.Vergleicht 2 Spalten in einem Datenrahmen Python

So zum Beispiel: if word = 'bleu' and ink = 'blue', möchte ich eine neue Spalte in meiner Datenrahmen 'congruent' = 1 und if not = 0.

Ich schrieb diesen Code:

import pandas as pd 
import numpy as np 
import random 

word = ['bleu', 'rouge', 'vert', 'jaune'] 

ink = ['blue', 'red', 'green', 'yellow'] 

my_list_word = [random.choice(word) for _ in range(60)] 

df = pd.DataFrame(my_list_word, columns=["word"]) 

my_list_ink = [random.choice(ink) for _ in range(60)] 

df['ink'] = my_list_ink 

df['congruent'] = 0 

print(df) 

Ich habe versucht, eine Schleife zu tun, aber es hat nicht funktioniert, meine kongruent Spalte alle

Jemand

0 gehalten weiß, wie dies zu tun?

Danke!

+0

passend Was hier deckungsgleich ist? – Dark

+1

Ihre Frage ist etwas verwirrend. Sie sollten eine Form der Übersetzungskarte erstellen und von dort zufällige Werte zeichnen. Kannst du versuchen, uns den Zweck zu erklären? –

+0

wenn das Wort in Französisch ist das gleiche wie die Tinte in Englisch .. vert = grün, ... In diesem Fall wäre es idex 5 bleu = blau – bim1

Antwort

2

Ich glaube, Sie sind für die Zuordnung suchen und d.h

di = dict(zip(word,ink)) 
df['new'] = (df['word'].map(di) == df['ink']).astype(int) 

    word  ink new 
0 bleu  red 0 
1 jaune yellow 1 
2 jaune blue 0 
3 jaune yellow 1 
4 vert blue 0 
+0

Ich würde gerne denken, dass diese Antwort von mir etwas inspiriert wurde, ... du hast meine Stimme bekommen. –

+0

Etwas yeah, hatte es eilig, den asnwer zu posten. Ein Hinweis von Anton half. Nicht sicher, ob dies genau das ist, was OP ist nach – Dark

+0

danke euch beiden :) Ich bin mir nicht sicher, wie man das Di erstellen? – bim1

1

Durch die Verwendung von merge

df1=pd.DataFrame({'word':word,'ink':ink}) 
df.merge(df1.assign(congruent=1),on=['word','ink'],how='left').fillna(0) 
Verwandte Themen