Есть ли функция для извлечения времени DTE из CSV, не проанализируя его в укус?Python

Программы на Python
Ответить
Anonymous
 Есть ли функция для извлечения времени DTE из CSV, не проанализируя его в укус?

Сообщение Anonymous »

У меня есть необработанные данные измерений в виде файла CSV в формате данных RAW CSV. Теперь у меня есть код, который усредняет миллисекунды до секунды. а затем мне нужно применить поправку времени на 1 час 10 минут 25 секунд к исходному времени. Например:
10:23:02.067
10:23:02.166
10:23:02.266
10:23:02.366
10:23:02.466
10:23:02.566
10:23:02.666
10:23:02.766
10:23:02.866
10:23:02.966
Все значения в строки (миллисекунды) должны быть усреднены до 10:23:02, а затем вы применяете коррекцию времени и получаете 9:12:37. Но изначально время такое:
23:02.0
23:02.1
23:02.2
23:02.3
23:02.4< ш />23:02.5
23:02.6
23:02.7
23:02.8
23:02.9
Когда я открываю CSV в Excel, и код думает, что 23 — это час, 02 — это минуты, а 0 — второй и окончательный результат`
такое: 22:49:35 Кто-нибудь, пожалуйста, помогите. Код следующий:
import pandas as pd
import numpy as np
import os
from datetime import timedelta
from tkinter import Tk, filedialog, messagebox`

def upload_files(prompt_message):
root = Tk()
root.withdraw() # Hide the root window
file_paths = filedialog.askopenfilenames(title=prompt_message) # Allow multiple file selection
return file_paths

def create_new_filename(file_path):
base_name = os.path.basename(file_path) # Extract the file name with extension
file_name, file_extension = os.path.splitext(base_name) # Split name and extension
new_file_name = f"{file_name}_Processed{file_extension}" # Append suffix to the name
return new_file_name

def safe_interp(x, xp, fp):
y = np.interp(x, xp, fp, left=0, right=0)
y[x < xp.min()] = 0
y[x > xp.max()] = 0
return y

def process_time_column(df, time_column):
df[time_column] = df[time_column].astype(str)
df['Time'] = df[time_column].str.slice(0, 8) # Extract 'HH:MM:SS.fff' only
return df

def average_by_second(df):
numeric_columns = df.select_dtypes(include=['float64', 'int64']).columns
df_grouped = df.groupby('Time')[numeric_columns].mean().reset_index()
# Merge back non-numeric columns without averaging, keeping the first occurrence for each unique 'Time'
df_final = pd.merge(df_grouped, df.drop(columns=numeric_columns).drop_duplicates('Time'), on='Time', how='left')
return df_final.round(5)

def apply_time_correction(df):
time_correction = timedelta(hours=1, minutes=10, seconds=25)
df['corrected_time'] = (pd.to_datetime(df['Time'], format='%I:%M:%S') - time_correction).dt.time
return df


Подробнее здесь: https://stackoverflow.com/questions/793 ... to-a-sting
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»