2017-09-27 3 views
1

I 다음 DataFrame 있습니다 은 다른 열을 분할하여 팬더 DataFrame에 새 열을 만들기 두 번

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 
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 

그것을 만들 수있는 코드입니다 그 안에있는 이름의 날짜 부분 만. 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]를 사용할 때 그것을 목록 인 첫 번째 행의 값을 선택합니다.

답변

4

사용 .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 
0

회원님이 왜 진짜로 확인 "분할 ('.'),"당신이 정말로 필요로하는 모든이입니다 즉 통해 인덱스를 선택합니다 :

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 
+0

질문을 설정할 때 연장이 누락되었습니다. 모든 행 값 끝에 ".csv"가 있습니다! 내 질문을 편집하거나 이것을 반영하여 주셔서 감사합니다. –

2

또는 사용 정규식

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 

또는 @ 에반이 제안한대로

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

정규 표현식을''([\ d -] +)'' –

관련 문제