Время округления до микросекунды - pandas - PullRequest
1 голос
/ 03 августа 2020

Кажется, я не могу найти это, но я уверен, что это где-то на SO. Я надеюсь округлить временные метки до одной микросекунды. Другие частоты округления работают, но когда я пытаюсь округлить следующее до одного десятичного знака, это не работает.

df = pd.DataFrame({
    'time' : ['2019-08-02 09:50:10.040','2019-08-02 09:50:10.080','2019-08-02 09:50:10.170','2019-08-02 09:50:10.180'],                  
        })

df['time'] = pd.to_datetime(df['time'])

df["time"] = df.time.dt.round("1L")

предполагаемый результат:

                     time
0 2019-08-02 09:50:10.0
1 2019-08-02 09:50:10.1
2 2019-08-02 09:50:10.2
3 2019-08-02 09:50:10.2

Ответы [ 2 ]

2 голосов
/ 03 августа 2020

Думаю, вы могли упустить из виду комбинирование псевдонимов смещения .

Округление на 100L должно дать правильный ответ в вашем случае. 100L будет округляться с использованием арбитража в 100 миллисекунд (или 0,1 секунды), именно то, что вам нужно в этом случае. Вы использовали 1L, которое уже было значением по умолчанию в фрейме данных.

df = pd.DataFrame({
    'time' : ['2019-08-02 09:50:10.040','2019-08-02 09:50:10.080','2019-08-02 09:50:10.170','2019-08-02 09:50:10.180'],                  
        })

df['time'] = pd.to_datetime(df['time'])

df['time'] = df.time.dt.round('100L')

Результат:

0   2019-08-02 09:50:10.000
1   2019-08-02 09:50:10.100
2   2019-08-02 09:50:10.200
3   2019-08-02 09:50:10.200

Дополнительные нули нельзя усечь, но вычисление -в противном случае вы получите ожидаемый результат.

1 голос
/ 03 августа 2020

Одно из решений:

df["time"] = df.time.dt.round("100ms")

Вывод

                     time
0 2019-08-02 09:50:10.000
1 2019-08-02 09:50:10.100
2 2019-08-02 09:50:10.200
3 2019-08-02 09:50:10.200

Вот все допустимые строки:

    'A': 'A-DEC',
    'AS': 'AS-JAN',
    'BA': 'BA-DEC',
    'BAS': 'BAS-JAN',
    'BY': 'BA-DEC',
    'BYS': 'BAS-JAN',
    'Min': 'T',
    'Q': 'Q-DEC',
    'W': 'W-SUN',
    'Y': 'A-DEC',
    'YS': 'AS-JAN',
    'min': 'T',
    'ms': 'L',
    'ns': 'N',
    'us': 'U',
...