簡體   English   中英

通過將另一列拆分兩次在Pandas DataFrame中創建新列

[英]Creating a new column in Pandas DataFrame by splitting another column twice

我有以下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

這是創建它的代碼:

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'])

我想要一個新列,其中只包含名稱的日期部分。 結果數據框架如下所示:

                          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

或使用正則表達式

df['Date'] = df['NAME'].str.extract('.*?_(\d+-\d+-\d+).csv', expand = False)


    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
5   this_is_a_sample_2017-09-13.csv 2017-09-13

或按照@Evan的建議使用

df['Date'] = df['NAME'].str.extract('([\d-]+)', expand = False)

不太確定為什么要使用“ split('。')”,您真正需要的就是:

df['DATE'] = df['NAME'].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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM