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

Rak*_*van 1 python dataframe pandas

我有以下DataFrame:

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

以下是创建它的代码:

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

我想要一个新列,其中只包含名称的日期部分.生成的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
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

df['DATE'] = df.NAME.str.split(".")[0].split('_')[-1]
Run Code Online (Sandbox Code Playgroud)

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

Flo*_*oor 5

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

 df['Date'] =  df['NAME'].str.split(".").str[0].str.split('_').str[-1]
Run Code Online (Sandbox Code Playgroud)
                         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