比较数据帧python中的2列

时间:2017-12-20 14:34:12

标签: python pandas dataframe

我正在尝试比较数据框中的一行是否为某个值。

所以例如: if word = 'bleu' and ink = 'blue',我想在我的数据框'congruent' = 1if not = 0中添加新列。

我写了这段代码:

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)

我试图做一个循环,但它不起作用,我的全等列保持全部为0。

有人知道怎么做吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为你正在寻找映射和匹配,即

RuleFor(d => d.NotificationType).NotEmpty().WithMessage("Required");

When(d => !string.IsNullOrEmpty(d.NotificationType) && d.NotificationType.ToUpper() == "EMAIL", () =>
{
    RuleFor(d => d.NotificationEmail).EmailAddress().WithMessage("Invalid Email Address");
    RuleFor(d => d.NotificationEmail).NotEmpty().WithMessage("Required");

});

When(d => !string.IsNullOrEmpty(d.NotificationType) && d.NotificationType.ToUpper() == "SMS", () =>
{
    RuleFor(d => d.NotificationContactNo).NotEmpty().WithMessage("Required");
});

答案 1 :(得分:1)

使用merge

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