Более подход, основанный на использовании pandas, заключается в применении функции замены, как показано ниже:
def multiple_replace(dict, text):
# Create a regular expression from the dictionary keys
regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
# For each match, look-up corresponding value in dictionary
return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
После того, как вы определили функцию, вы можете применить ее к вашему фреймворку данных.
di = {1: "A", 2: "B"}
df['col1'] = df.apply(lambda row: multiple_replace(di, row['col1']), axis=1)
Самый простой и эффективный способ - использовать бесплатную библиотеку Ховарда Хиннанта с открытым исходным кодом, только для заголовков, с одним заголовком, дату / время :
#include "date/date.h"
...
using namespace date;
using namespace std::chrono;
int Y, M, D, h, m, s, ms;
...
system_clock::time_point tp = sys_days{year{Y}/M/D} +
hours{h} + minutes{m} + seconds{s} + milliseconds{ms};
Все библиотека даты / времени делает для вас преобразование тройки Y / M / D в chrono::time_point<system_clock, days>
. Тогда все остальное выражение - это C ++ 11 <chrono>
.
библиотека даты / времени была включена в черновую спецификацию C ++ 20, так что, надеюсь, через несколько лет ваш код станет соответствующим стандарту, просто удалив #include "date/date.h"
и using namespace date;
.
Если по каким-либо причинам вы не можете использовать библиотеку даты и времени , то вы можете сами кодировать days_from_civil
с помощью этой формулы общественного достояния.