如何使用正则表达式和熊猫创建月份和年份列

ast*_*boy 2 python datetime pandas

你好堆栈溢出社区

我这里有数据框

code        sum of August 
AA             1000         
BB             4000           
CC             72262          
Run Code Online (Sandbox Code Playgroud)

所以有两列 ['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
Run Code Online (Sandbox Code Playgroud)

所以 ['sum of August'] 列有时仅命名为 ['August'] 或 ['august']。有时,它可以是 ['11 月的总和'] 或 ['十一月'] 或 ['十一月']。

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

任何人都可以帮我解决这个问题吗?

提前致谢!

Bil*_*ros 6

您可以执行以下操作:

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'}
Run Code Online (Sandbox Code Playgroud)

假设您的数据框名为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
Run Code Online (Sandbox Code Playgroud)

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