首页 > 解决方案 > 如何使用正则表达式和熊猫创建月份和年份列

问题描述

你好堆栈溢出社区

我在这里有数据框

code        sum of August 
AA             1000         
BB             4000           
CC             72262          

所以有两列 ['code','sum of August']

我必须将此数据帧转换为 ['month', 'year', 'code', 'sum of August'] 列

month    year    code    sum of August
   8     2020     AA      1000
   8     2020     BB      4000
   8     2020     CC      72262

因此 ['sum of August'] 列有时仅命名为 ['August'] 或 ['august']。有时,它可以是 ['sum of November'] 或 ['November'] 或 ['november']。

我想过使用正则表达式来提取月份名称并转换为月份编号。

谁能帮我解决这个问题?

提前致谢!

标签: pythonpandasdatetime

解决方案


您可以执行以下操作:

month = {1:'janauary',
2:'february',
3:'march',
4:'april',
5:'may',
6:'june',
7:'july',
8:'august',
9:'september',
10:'october',
11:'november',
12:'december'}

假设您的数据框称为df。然后您可以使用以下命令自动创建月份列:

df['month']=[i for i,j in month.items() if j in str.lower(" ".join(df.columns))][0]


  code  sum of August  month
0   AA           1000      8
1   BB           4000      8
2   CC          72262      8

这意味着如果某个月份的名称以任何方式存在于列名称中,则返回该月份的编号。


推荐阅读