2017-09-28 1 views
0

이렇게 두리스트가 있습니다 : gender = ['Male', 'Female']subject = ['Math3_Exam_Mark', 'Math6_Exam_Mark', 'Math9_Exam_Mark', 'ELA3_Exam_Mark', 'ELA6_Exam_Mark', 'ELA9_Exam_Mark'] 그리고 CSV 파일에서 추출한 날짜 목록을 포함하는 ndarray birthMonthYear.3 개의리스트의 모든 값의 조합을 포함하는 파이썬에서 데이터 프레임을 만듭니다.

gender, subject, birthMonthYear의 세 열로 새 데이터 프레임을 만들고 싶습니다. 성별, 주제 및 출생 연도의 모든 조합에 대한 행이 있어야합니다.

팬더를 사용하면 쉽게 할 수 있습니까? 데이터 프레임을 만들기 위해 각 목록을 통과하는 중첩 된 foreach 루프를 만들 수 있다고 상상해 봅니다. 그러나 더 간단한 것이 있다면 그것을 시험해보고 싶습니다.

도움 주셔서 감사합니다.

+0

또한 예제를 완벽하게 재현 할 수 있도록 출산 월모를 추가하십시오. – cmaher

답변

0

설정

gender = ['Male', 'Female'] 
subject = ['Math3_Exam_Mark', 'Math6_Exam_Mark', 'Math9_Exam_Mark', 
      'ELA3_Exam_Mark', 'ELA6_Exam_Mark', 'ELA9_Exam_Mark'] 
birthMonthYear = pd.date_range('2010-01-31', periods=2, freq='M') 

옵션 1
itertools.product

from itertools import product 

pd.DataFrame(
    list(product(gender, subject, birthMonthYear)), 
    columns=['Gender', 'Subject', 'BirthMonthYear'] 
) 

    Gender   Subject BirthMonthYear 
0  Male Math3_Exam_Mark  2010-01-31 
1  Male Math3_Exam_Mark  2010-02-28 
2  Male Math6_Exam_Mark  2010-01-31 
3  Male Math6_Exam_Mark  2010-02-28 
4  Male Math9_Exam_Mark  2010-01-31 
5  Male Math9_Exam_Mark  2010-02-28 
6  Male ELA3_Exam_Mark  2010-01-31 
7  Male ELA3_Exam_Mark  2010-02-28 
8  Male ELA6_Exam_Mark  2010-01-31 
9  Male ELA6_Exam_Mark  2010-02-28 
10 Male ELA9_Exam_Mark  2010-01-31 
11 Male ELA9_Exam_Mark  2010-02-28 
12 Female Math3_Exam_Mark  2010-01-31 
13 Female Math3_Exam_Mark  2010-02-28 
14 Female Math6_Exam_Mark  2010-01-31 
15 Female Math6_Exam_Mark  2010-02-28 
16 Female Math9_Exam_Mark  2010-01-31 
17 Female Math9_Exam_Mark  2010-02-28 
18 Female ELA3_Exam_Mark  2010-01-31 
19 Female ELA3_Exam_Mark  2010-02-28 
20 Female ELA6_Exam_Mark  2010-01-31 
21 Female ELA6_Exam_Mark  2010-02-28 
22 Female ELA9_Exam_Mark  2010-01-31 
23 Female ELA9_Exam_Mark  2010-02-28 

옵션 2
pd.MultiIndex.from_product

idx = pd.MultiIndex.from_product(
    [gender, subject, birthMonthYear], 
    names=['Gender', 'Subject', 'BirthMonthYear'] 
) 

pd.DataFrame(index=idx).reset_index() 

    Gender   Subject BirthMonthYear 
0  Male Math3_Exam_Mark  2010-01-31 
1  Male Math3_Exam_Mark  2010-02-28 
2  Male Math6_Exam_Mark  2010-01-31 
3  Male Math6_Exam_Mark  2010-02-28 
4  Male Math9_Exam_Mark  2010-01-31 
5  Male Math9_Exam_Mark  2010-02-28 
6  Male ELA3_Exam_Mark  2010-01-31 
7  Male ELA3_Exam_Mark  2010-02-28 
8  Male ELA6_Exam_Mark  2010-01-31 
9  Male ELA6_Exam_Mark  2010-02-28 
10 Male ELA9_Exam_Mark  2010-01-31 
11 Male ELA9_Exam_Mark  2010-02-28 
12 Female Math3_Exam_Mark  2010-01-31 
13 Female Math3_Exam_Mark  2010-02-28 
14 Female Math6_Exam_Mark  2010-01-31 
15 Female Math6_Exam_Mark  2010-02-28 
16 Female Math9_Exam_Mark  2010-01-31 
17 Female Math9_Exam_Mark  2010-02-28 
18 Female ELA3_Exam_Mark  2010-01-31 
19 Female ELA3_Exam_Mark  2010-02-28 
20 Female ELA6_Exam_Mark  2010-01-31 
21 Female ELA6_Exam_Mark  2010-02-28 
22 Female ELA9_Exam_Mark  2010-01-31 
23 Female ELA9_Exam_Mark  2010-02-28 
관련 문제