2017-11-10 5 views
1

저는이 파이썬 문제에 대해 잠시 동안 머리를 숙이고 붙어 있습니다. 나는 for-looping을 통해 여러 개의 csv 파일을보고 각 csv 파일의 한 열이 열 이름이고 datetime의 공통 색인을 설정하는 방식으로 csv 파일을 추가하는 하나의 데이터 프레임을 원한다.데이터 프레임을 루프에 추가하고 파이썬에서 새로운 데이터 프레임을 만듭니다.

valuepod 숫자를 제외하고이 데이터 프레임처럼 보이는 11 개의 csv 파일이 있지만 모든 csv에 대해 time_stamp은 동일합니다.

data

pod time_stamp value 
0 97 2016-02-22 3.048000 
1 97 2016-02-29 23.622001 
2 97 2016-03-07 13.970001 
3 97 2016-03-14 6.604000 
4 97 2016-03-21 NaN 

그리고 이것은가 루프 내가 지금까지 가지고있다 :

import glob 
import pandas as pd 

filenames = sorted(glob.glob('*.csv')) 

new = [] 

for f in filenames: 
    data = pd.read_csv(f) 

    time_stamp = [pd.to_datetime(d) for d in time_stamp] 

    new.append(data) 

my_df = pd.DataFrame(new, columns=['pod','time_stamp','value']) 

는 내가 원하는 것은 각 열이의 결과 다음과 같습니다 데이터 프레임 각 csv 파일의 value.

time_stamp 97  98  99 ... 
2016-02-22 3.04800 4.20002 3.5500 
2016-02-29. 23.62201 24.7392 21.1110 
2016-03-07 13.97001 11.0284 12.0000 

는하지만 지금 my_df의 출력은 매우 잘못하고 다음과 같습니다. 내가 어디로 잘못 갔는지에 대한 어떤 생각?

0 
0 pod time_stamp value 0 22 2016-... 
1 pod time_stamp value 0 72 2016-... 
2 pod time_stamp value 0 79 2016-0... 
3 pod time_stamp value 0 86 2016-... 
4 pod time_stamp value 0 87 2016-... 
5 pod time_stamp value 0 88 2016-... 
6 pod time_stamp value 0 90 2016-0... 
7 pod time_stamp value 0 93 2016-0... 
8 pod time_stamp value 0 95 2016-... 
+1

당신은'time_stamp' 변환하지만 다시 할당하지 않습니다. 게다가, 새로운 변수'rain'를 만들지 만 아무것도하지 않습니다. –

+0

설명을 정리합니다. – JAG2024

답변

2

은 내가 먼저 pd.concat과 함께 모든 dataframes을 연결 한 다음 마지막으로 pivot 작업을 수행하는 것이 좋습니다 것입니다. 내가 read_csv을 강요하고있어

filenames = sorted(glob.glob('*.csv')) 

new = [pd.read_csv(f, parse_dates=['time_stamp']) for f in filenames] 
df = pd.concat(new) # omit axis argument since it is 0 by default 

df = df.pivot(index='time_stamp', columns='pod') 

참고 time_stamp로드 dataframe, 그래서 적재 후 분석 더 이상 필요 구문 분석 없습니다.


MCVE

df 

    pod time_stamp  value 
0 97 2016-02-22 3.048000 
1 97 2016-02-29 23.622001 
2 97 2016-03-07 13.970001 
3 97 2016-03-14 6.604000 
4 97 2016-03-21  NaN 

df.pivot(index='time_stamp', columns='pod') 

       value 
pod    97 
time_stamp   
2016-02-22 3.048000 
2016-02-29 23.622001 
2016-03-07 13.970001 
2016-03-14 6.604000 
2016-03-21  NaN 
+0

이것은 정말 깨끗합니다. 우수한. 고마워. – JAG2024

+0

@ JAG2024 감사합니다. 'axis = 0'이어야합니다. 오식. –

+0

나는 그것을 좋아한다. . . – piRSquared

관련 문제