2017-05-11 15 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 

であり、したがって、UNIXタイムスタンプが同じである(それが正しい)、それを表現するためのより良い方法があります?

答えて

0

のようにコードを書き換えたい:

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

hereで述べたように、反復処理中のDFを変更するのにiterrows()を使用しないでください。行ごとに反復処理する必要がある場合(applyメソッドを使用するのではなく)、別のデータオブジェクトを使用できます。リストを使用して、計算している値を保持し、その値から新しい列を作成します。

また、itertuples()メソッドはiterrows()より高速ですが、各列のインデックス(row ['name']ではなくrow [x])を知っている必要があります。

+0

質問はどうやってミリ秒レベルPythonのUnixタイムスタンプを持つ精度 – 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'の計算はunixタイムスタンプになりません – tandem

関連する問題