我正在尝试比较数据框中的一行是否为某个值。
所以例如:
if word = 'bleu' and ink = 'blue'
,我想在我的数据框'congruent' = 1
和if 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。
有人知道怎么做吗?
谢谢!
答案 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)