我有以下表格的数据:
JournalInformation Month
Dec. American Journal of Science
Molecular Methods. Aug DOI: 10101
Science Journal Jun.
Dec. Cognitive Science weekly
目标:
JournalInformation Month
Dec. American Journal of Science 12
Molecular Methods. Aug DOI: 10101 8
Science Journal Jun. 6
Dec. Cognitive Science weekly 12
我有数百万行,所以解决方案需要快速。
我发现df.JournalInformation.apply(set("Dec").issubset)
获取布尔列表的速度非常快......但是,
由于大熊猫似乎对任何类型的多索引分配都不满意,对我来说如何操作布尔信息并不明显(除了创建12列......而且这很丑陋)。
月份dict:
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
}
答案 0 :(得分:3)
使用str.extract
和map
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)
在regex
中使用extract
时,它将拉出与月份词典中的键匹配的第一个子字符串。然后map
将从字典中获取匹配值。