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)