Нужно добавить миллисекунды ко времени - PullRequest
0 голосов
/ 23 мая 2019

У меня есть фрейм данных с некоторыми столбцами, из которых один столбец - Время.Я вычислил миллисекунды из данных, которые мне дают, и добавил, что это отдельные столбцы, называемые миллисекундами.Теперь я объединил оба столбца, чтобы получить один столбец с миллисекундами.

Проблема 1.) Мне нужны миллисекунды с тремя десятичными разрядами, поэтому мне нужно округлить их.2.) Когда я конкатенирую отметку времени с миллисекундами, чтобы при увеличении секунд с единицей миллисекунда снова начиналась с нуля.Как и после

В приведенном ниже коде «sample» является константой = 60, а «RDT Sequence» является значением, начинающимся с единицы, и увеличивается на 1 для каждой следующей строки.

2019-02-21 03:50:39:2
2019-02-21 03:50:40:216666666667
But instead I should get    
2019-02-21 03:50:40:00

Time    Miliseconds  \                    Time1  


0    2019-02-21 03:50:39  0166666666667   2019-02-21 03:50:39:0166666666667
1    2019-02-21 03:50:39  0333333333333   2019-02-21 03:50:39:0333333333333
2    2019-02-21 03:50:39             05   2019-02-21 03:50:39:05
3    2019-02-21 03:50:39  0666666666667   2019-02-21 03:50:39:0666666666667 
4    2019-02-21 03:50:39  0833333333333   2019-02-21 03:50:39:0833333333333 
5    2019-02-21 03:50:39              1   2019-02-21 03:50:39:1 
6    2019-02-21 03:50:39   116666666667   2019-02-21 03:50:39:116666666667
7    2019-02-21 03:50:39   133333333333   2019-02-21 03:50:39:133333333333
8    2019-02-21 03:50:39             15   2019-02-21 03:50:39:15
9    2019-02-21 03:50:39   166666666667   2019-02-21 03:50:39:166666666667
10   2019-02-21 03:50:39   183333333333   2019-02-21 03:50:39:183333333333
11   2019-02-21 03:50:39              2   2019-02-21 03:50:39:2
12   2019-02-21 03:50:40   216666666667   2019-02-21 03:50:40:216666666667
13   2019-02-21 03:50:40   233333333333   2019-02-21 03:50:40:233333333333
14   2019-02-21 03:50:40             25   2019-02-21 03:50:40:25
15   2019-02-21 03:50:40   266666666667   2019-02-21 03:50:40:266666666667

df['Miliseconds'] = df['RDT Sequence']/sample
df['Miliseconds'] = df['Miliseconds'].map(str).str[2:]
df['Time1'] = df['Time'].map(str) +":"+ df['Miliseconds'].map(str)  
print(df)

1 Ответ

0 голосов
/ 23 мая 2019

Предполагая, что столбец «Время» является строкой, вам нужна временная метка панды.Затем вы хотите миллисекунды в числовом формате.Учитывая, что в формате, который представляет дробную часть числа, мы конвертируем его в дробь, округляем до 3 и затем умножаем на 1000, чтобы получить миллисекунды.Наконец, мы используем его для построения временной шкалы, чтобы ее можно было легко добавить к метке времени.

# The Miliseconds column is not currently in milliseconds, it is
# a fraction of a second (0.016)
# Rounding it off is easy
df["Miliseconds"] = df["Miliseconds"].round(3)
# Make it milliseconds, not fraction of a seconds
df["Miliseconds"] = df["Miliseconds"] * 1000

# Now add it to Time using a Timedelta
tdelta = pd.to_timedelta(df["Miliseconds"], unit="ms")
df["Time1"] = df["Time"] + tdelta

Многие из вышеперечисленных процедур могут быть выполнены в одной строке.Я расширил здесь, чтобы проиллюстрировать каждую операцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...