Skip to main content
 首页 » 编程设计

python之通过将另一列拆分两次在 Pandas DataFrame 中创建一个新列

2025年05月04日13java哥

我有以下数据框:

                          NAME 
0  this_is_a_sample_2017-09-08.csv 
1  this_is_a_sample_2017-09-09.csv 
2  this_is_a_sample_2017-09-10.csv 
3  this_is_a_sample_2017-09-11.csv 
4  this_is_a_sample_2017-09-12.csv 
5  this_is_a_sample_2017-09-13.csv 

这是创建它的代码:

rows = ['this_is_a_sample_2017-09-08','this_is_a_sample_2017-09-09','this_is_a_sample_2017-09-10','this_is_a_sample_2017-09-11','this_is_a_sample_2017-09-12','this_is_a_sample_2017-09-13'] 
df = pd.DataFrame(rows, columns = ['NAME']) 

我想要一个新列,其中只有名称的日期部分。生成的 DataFrame 如下所示:

                          NAME       DATE 
0  this_is_a_sample_2017-09-08.csv   2017-09-08 
1  this_is_a_sample_2017-09-09.csv   2017-09-09 
2  this_is_a_sample_2017-09-10.csv   2017-09-10 
3  this_is_a_sample_2017-09-11.csv   2017-09-11 
4  this_is_a_sample_2017-09-12.csv   2017-09-12 

我尝试了以下方法:

df['DATE'] = df.NAME.str.split(".")[0].split('_')[-1] 

我想我可以将列拆分两次并从列表中获取日期,但是当我使用 [0] 对其进行索引时,它会选择第一行中的值,这是一个列表。

请您参考如下方法:

使用 .str 访问器选择系列中的索引,即

 df['Date'] =  df['NAME'].str.split(".").str[0].str.split('_').str[-1] 
                         NAME        Date 
0  this_is_a_sample_2017-09-08  2017-09-08 
1  this_is_a_sample_2017-09-09  2017-09-09 
2  this_is_a_sample_2017-09-10  2017-09-10 
3  this_is_a_sample_2017-09-11  2017-09-11 
4  this_is_a_sample_2017-09-12  2017-09-12 
5  this_is_a_sample_2017-09-13  2017-09-13