我正在迭代可用的行,但它似乎不是最佳的方法 - 它需要永远。
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 :(得分:0)
假设日期时间正确反映了您尝试做的事情,对于Pandas您应该能够做到:
df['STAMPME'] = df['TCOUNT'].apply(lambda x: (datetime.timedelta(seconds=x) + INIT_TIME).strftime("%s"))
如上所述here,您不应该使用iterrows()来修改您正在迭代的DF。如果需要逐行迭代(而不是使用apply方法),则可以使用另一个数据对象,例如:列表,保留您正在计算的值,然后从中创建新列。
另外,为了将来参考,itertuples()方法比iterrows()快,但它要求你知道每列的索引(即row [x]而不是row [' name&#39] ;])