Используйте map
и dictionary
- сначала создайте dict по новым именам в ключах и перечислите в значениях, а затем поменяйте местами друг друга в плоский словарь в понимании dict:
d = {'short':short,
'intermediate':inter,
'long':long,
'plate':plate,
'road':road}
d1 = {k: oldk for oldk, oldv in d.items() for k in oldv}
df['Type'] = df['Race'].map(d1)
print (df)
Race Start Mid Race Total Laps DRIVER RATING Type
0 1 5 23 207 105.2 plate
1 2 16 7 325 94.2 intermediate
2 3 10 2 267 106.1 intermediate
3 4 5 11 311 80.0 short
4 5 6 3 200 113.0 long
[1111 ] Если хотите, чтобы все значения, не соответствующие первым 4 категориям, были установлены на road
, удалите road
из первого словаря и добавьте fillna
, чтобы отменить все несоответствующие значения:
d = {'short':short,
'intermediate':inter,
'long':long,
'plate':plate}
d1 = {k: oldk for oldk, oldv in d.items() for k in oldv}
df['Type'] = df['Race'].map(d1).fillna('road')
Деталь :
print (d1)
{
4: 'short', 6: 'short',
8: 'short', 9: 'short',
11: 'short', 20: 'short',
24: 'short', 28: 'short',
30: 'short', 33: 'short',
35: 'short', 2: 'intermediate',
3: 'intermediate', 7: 'intermediate',
12: 'intermediate', 13: 'intermediate',
17: 'intermediate', 19: 'intermediate',
25: 'intermediate', 27: 'intermediate',
32: 'intermediate', 34: 'intermediate',
36: 'intermediate', 5: 'long',
14: 'long', 15: 'long',
21: 'long', 23: 'long',
26: 'long', 1: 'plate',
10: 'plate', 18: 'plate',
31: 'plate', 16: 'road',
22: 'road', 29: 'road'
}
лично я предложил бы, чтобы Вы использовали мою электронную почту модуля:: Отправьте:: SMTP:: TLS, который работает вполне прилично через TLS Google Mail.
Спасибо.
use Email::Send;
my $mailer = Email::Send->new( {
mailer => 'SMTP::TLS',
mailer_args => [
Host => 'smtp.gmail.com',
Port => 587,
User => 'username@gmail.com',
Password => 'password',
Hello => 'fayland.org',
]
} );
use Email::Simple::Creator; # or other Email::
my $email = Email::Simple->create(
header => [
From => 'username@gmail.com',
To => 'to@mail.com',
Subject => 'Subject title',
],
body => 'Content.',
);
eval { $mailer->send($email) };
die "Error sending email: $@" if $@;
Согласно комментарию, не ясно, хотите ли Вы послать электронное письмо через SMTP Google или просто послать электронное письмо в целом (возможно, в Вашу учетную запись Gmail). Необходимо проверить электронную почту:: Отправьте и возможно электронная почта:: Отправьте:: Gmail.
С другой стороны, если то, что Вы действительно спрашиваете, - то, как делают я перемещаю электронную почту из куда-нибудь, которая не является Gmail к Gmail, мне очень везло с IMAP с помощью Почты:: Поле и Почта:: Поле:: IMAP4:: бэкенд SSL. Вы видите пример использования здесь.
Другая возможность, на которую Вы могли бы хотеть посмотреть, использует электронную почту:: Отправьте:: модуль Gmail от CPAN. Это позволит Вам посылать электронное письмо от своей учетной записи Gmail до любой учетной записи (например, себе)
Я всегда использовал и вез очень с Почтой:: Отправитель.
Существуют muliple модули SMTP на CPAN, например, Сеть:: ESMTP. Кроме того, sendmail очень, вероятно, использует SMTP для общения с почтовыми серверами, поэтому какова настоящая причина для того, чтобы не желать использовать его?
Если Вы не знакомы с CPAN (Всесторонняя Сеть Архива Perl), я рекомендую Вам отметить тот сайт. Это содержит третье лицо (главным образом хорошо протестированный) библиотеки.
Пример, показывающий, как послать электронные письма с помощью жемчуга: http://www.perlfect.com/articles/sendmail.shtml
Я, оказывается, использую MIME::Lite
, который является оберткой вокруг Net::SMTP
упростить процесс создания почтовых объектов, файловых вложений и отправки полезной нагрузки.
Если Вы не знакомы с установкой модулей, проверьте:
В Windows используйте диспетчер пакетов ActiveState Perl (в меню "Пуск")
На Unix используйте CPAN: $ sudo cpan Module::Name
На размещенных учетных записях Unix: Как я могу установить модуль CPAN в локальный каталог?
Если вам просто не нравится sendmail, другой вариант - использовать Postfix , другой MTA.
Вот инструкции, которым я следовал, чтобы установить его на моем компьютере с помощью Gmail: http://souptonuts.sourceforge.net/postfix_tutorial.html
Это также может быть полезно, если вы получаете предупреждение о невозможности проверить сертификат от Thawte Premium Server CA. http://ubuntuforums.org/archive/index.php/t-894355.html