2017-05-11 3 views
0

사용할 수있는 행을 반복하고 있지만 가장 적합한 방법은 아닙니다. 영원히 걸립니다.팬더 데이터 프레임에서 각각에 지정된 값 추가하기

Pandas에는 특별한 방법이 있습니다. 또한

INIT_TIME = datetime.datetime.strptime(date + ' ' + time, "%Y-%B-%d %H:%M:%S") 
#NEED TO ADD DATA FROM THAT COLUMN 

df = pd.read_csv(dataset_path, delimiter=',',skiprows=range(0,1),names=['TCOUNT','CORE','COUNTER','EMPTY','NAME','TSTAMP','MULT','STAMPME']) 
df = df.drop('MULT',1) 
df = df.drop('EMPTY',1) 
df = df.drop('TSTAMP', 1) 
for index, row in df.iterrows(): 
    TMP_TIME = INIT_TIME + datetime.timedelta(seconds=row['TCOUNT']) 
    df['STAMPME'] = TMP_TIME.strftime("%s") 

는, 내가 추가하고있는 날짜의 형식은 다음과

2017-05-11 11:12:37.100192 1494493957 
2017-05-11 11:12:37.200541 1494493957 

에 따라서 유닉스 타임 스탬프 (그리고 올바른) 동일하지만, 그것을 표현하는 더 나은 방법이있다 ?

답변

0

같은 코드를 다시 작성할 것 :

df['STAMPME'] = df['TCOUNT'].apply(lambda x: (datetime.timedelta(seconds=x) + INIT_TIME).strftime("%s")) 

here과 같이 iterating하는 DF를 수정하기 위해 iterrows()를 사용하면 안됩니다. 적용 메소드를 사용하는 것과 달리 행 단위로 반복해야하는 경우 다른 데이터 객체 (예 : 목록에서 계산중인 값을 유지 한 다음 그 값에서 새 열을 만듭니다.

나중에 itertuples() 메소드는 iterrows()보다 빠르지 만 각 열의 색인 (row [ 'name']과 반대되는 row [x])을 알아야합니다.

+0

질문은 여전히 ​​어떻게 밀리 초 레벨을 얻는가입니다 파이썬에서 유닉스 타임 스탬프로 정밀도 – tandem

+0

@tandem이 당신을 위해이 작업을합니까? http://stackoverflow.com/questions/7588511/format-a-datetime-into-a-string-with-milliseconds – abe

+0

http://stackoverflow.com/a/8778548/1059860 더 많은 가능성이 있지만 보이지 않는 ' 도와 줘. 나는 조금 노력했다. – tandem

0

당신이 할 수 있어야 팬더을 나는 관련하여, 날짜 시간이 정확하게 당신이 뭘하려는 건지 반영하는 가정이

INIT_TIME = datetime.datetime.strptime(date + ' ' + time, "%Y-%B-%d %H:%M:%S") 
INIT_TIME = pd.to_datetime(INIT_TIME) 

df = pd.read_csv(
    dataset_path, delimiter=',',skiprows=range(0,1), 
    names=['TCOUNT','CORE','COUNTER','EMPTY','NAME','TSTAMP','MULT','STAMPME'] 
) 
df = df.drop(['MULT', 'EMPTY', 'TSTAMP'], 1) 
df['STAMPME'] = pd.to_timedelta(df['TCOUNT'], 's') + INIT_TIME 
+0

고마워요. 그 타임 스탬프 문제는 어때? 그것에 대해 어떤 견해를 갖고 있습니까? – tandem

+0

@tandem 팬더 타임 스탬프가 추가됩니다. 그들은 다르게 보일 것이며 날짜 유형이 될 것입니다. 네가 무엇을 요구하는지 잘 모르겠다. – piRSquared

+0

그리고'df [ 'STAMPME'] = pd.to_timedelta (df [ 'TCOUNT'], 's') + INIT_TIME'에 대한 계산은 유닉스 타임 스탬프가되지 않습니다 – tandem

관련 문제