Python 按熊猫中的列内容标记日期(矢量化)

Python 按熊猫中的列内容标记日期(矢量化),python,pandas,dataframe,vectorization,Python,Pandas,Dataframe,Vectorization,我有以下形式的数据: JournalInformation Month Dec. American Journal of Science Molecular Methods. Aug DOI: 10101 Science Journal Jun. Dec. Cognitive Science weekly 目标: 我有数百万行,因此解决方案需要快速 我发现df.JournalInformation.apply(set(“Dec”).issu

我有以下形式的数据:

     JournalInformation                      Month
Dec. American Journal of Science
Molecular Methods. Aug DOI: 10101
Science Journal Jun.
Dec. Cognitive Science weekly
目标:


我有数百万行,因此解决方案需要快速

我发现
df.JournalInformation.apply(set(“Dec”).issubset)
是获取布尔族列表的非常快速的方法…但是, 由于pandas似乎对任何类型的多索引分配都不满意,因此我不清楚如何操作布尔信息(除了创建12列……这很难看)


月份命令:

months_of_year = {  "Jan" : 1
                  , "Feb" : 2
                  , "Mar" : 3
                  , "Apr" : 4
                  , "May" : 5
                  , "Jun" : 6
                  , "Jul" : 7
                  , "Aug" : 8
                  , "Sept": 9
                  , "Oct" : 10
                  , "Nov" : 11
                  , "Dec" : 12
}

使用
str.extract
map

regex = r'({})'.format('|'.join(months_of_year.keys()))
df.JournalInformation.str.extract(regex, expand=False).map(months_of_year)
解释
当在
extract
中使用
regex
时,它将拉出与months字典中的键匹配的第一个子字符串。然后
map
将从字典中获得匹配值。

这是一个令人惊讶的答案。我有超过1200万行,这个解决方案返回的速度和我一直在做的所有其他(更简单)向量化字符串操作一样快。非常感谢。
regex = r'({})'.format('|'.join(months_of_year.keys()))
df.JournalInformation.str.extract(regex, expand=False).map(months_of_year)
print regex

(Feb|Aug|Jan|Dec|Sept|Oct|Mar|May|Jun|Jul|Apr|Nov)