Python 如何有效地从熊猫的数据帧头中提取日期年?
目的是提取月-年类别下的df,同时忽略其他类别。 下面的代码是实现此目标的一种方法Python 如何有效地从熊猫的数据帧头中提取日期年?,python,pandas,Python,Pandas,目的是提取月-年类别下的df,同时忽略其他类别。 下面的代码是实现此目标的一种方法 df = DataFrame ( [['PP1', 'LN', 'T1', 'C11', 'C21', 'C31', 'C32']] ) df.columns =['dummy1','dummy2', 'Jan-20', 'Feb-20', 'Jan 2021', 'Feb 2080','Dec 1993'] extract_header_name=list(df.columns.values) lookup_l
df = DataFrame ( [['PP1', 'LN', 'T1', 'C11', 'C21', 'C31', 'C32']] )
df.columns =['dummy1','dummy2', 'Jan-20', 'Feb-20', 'Jan 2021', 'Feb 2080','Dec 1993']
extract_header_name=list(df.columns.values)
lookup_list= ['Jan', 'Feb', 'Mar','Apr', 'May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
month_year_list=[i for e in lookup_list for i in extract_header_name if e in i]
输出
['Jan-20', 'Jan 2021', 'Feb-20', 'Feb 2080', 'Dec 1993']
但是,我想知道是否还有另一个有效的模块可以实现类似的结果?对于regex或
,与值一起使用
——它的意思是Jan
或Feb
。。。并使用df.列进行筛选
:
month_year_list = df.columns[df.columns.str.contains('|'.join(lookup_list))].tolist()
print (month_year_list)
['Jan-20', 'Feb-20', 'Jan 2021', 'Feb 2080', 'Dec 1993']
或与“将列表转换为元组”一起使用:
month_year_list = df.columns[df.columns.str.startswith(tuple(lookup_list))].tolist()
如果只有这两种日期时间格式,另一个想法是:
s = df.columns.to_series()
s1 = pd.to_datetime(s, format='%b-%y', errors='coerce')
s2 = pd.to_datetime(s, format='%b %Y', errors='coerce')
month_year_list = df.columns[s1.fillna(s2).notna()].tolist()
print (month_year_list)
['Jan-20', 'Feb-20', 'Jan 2021', 'Feb 2080', 'Dec 1993']
使用
df.filter
选择列并提取它们的名称
list(df.filter(regex='|'.join(lookup_list)).columns)
['Jan-20', 'Feb-20', 'Jan 2021', 'Feb 2080', 'Dec 1993']
是的,这个比我原来的要紧凑得多。令人惊叹的