正则表达式从数据框中的列提取日期

时间:2020-04-10 09:11:34

标签: regex python-3.x pandas

我必须处理一个结构如下的数据框:

print (df)
        2012-02-23~2012-02-29  2012-03-01~2012-03-08
Team A                    213                   3213
Team B                    321                   3213

我正在尝试修改列名以提取字符〜之后的日期部分。

df = pd.read_excel('test.xlsx')
df.columns = df.columns.str.extract(r'~(.*)')
df

我正在使用上面的代码,但是得到的结果如下:

print (df)
        (2012-02-29,)  (2012-03-08,)
Team A            213           3213
Team B            321           3213

问题是逗号来自何处?以及为什么每列中都有(),我的目标是获取下表,并将datetype转换为datestamp。

        2012-02-29  2012-03-08
Team A         213        3213
Team B         321        3213

1 个答案:

答案 0 :(得分:1)

我认为expand=False在这里应避免将MultiIndex转换为元组:

df.columns = df.columns.str.extract(r'~(.*)', expand=False)
print (df)
        2012-02-29  2012-03-08
Team A         213        3213
Team B         321        3213

或将split与列表的第二个值一起使用:

df.columns = df.columns.str.split('~').str[1]
print (df)
        2012-02-29  2012-03-08
Team A         213        3213
Team B         321        3213
相关问题