как заменить отсутствующую дату из NAT на какую-то дату в порядке возрастания в python

[Visual Studio C # 2010 Express, v10.0.30319 на Windows 7 64-битной установке]

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

Если результат GetScrollPos() равен >0x7FFF, тогда, когда nPos сдвинут, верхний бит установлен. При создании IntPtr с результирующей переменной wParam произойдет сбой OverflowException. Вы можете легко проверить это следующим образом (вторая строка не сработает):

    IntPtr ip = new IntPtr(0x7FFF0000);
    IntPtr ip2 = new IntPtr(0x80000000);

Версия SendMessage(), которая использует UIntPtr, окажется решением, но я не мог получить что работать. Итак, я использую следующее:

    [DllImport("User32.dll")]
    public extern static int SendMessage(IntPtr hWnd, uint msg, UInt32 wParam, UInt32 lParam);

Это должно быть хорошо до 0xffff, но после этого произойдет сбой. Я еще не испытал результат >0xffff из GetScrollPos() и предположил, что User32.dll вряд ли будет иметь 64-битную версию SendCommand(), но любые решения этой проблемы будут весьма полезны.

0
задан Mayank Patel 19 March 2019 в 11:34
поделиться

1 ответ

Это добавит дополнительную дату к вашему фрейму данных.

import pandas as pd
import datetime as dt

ddict = {
    'Date': ['2014-12-29','2014-12-30','2014-12-31','','','','',]
    }

data = pd.DataFrame(ddict)
data['Date'] = pd.to_datetime(data['Date'])

def fill_dates(data_frame, date_col='Date'):
    ### Seconds in a day (3600 seconds per hour x 24 hours per day)
    day_s = 3600 * 24

    ### Create datetime variable for adding 1 day
    _day = dt.timedelta(seconds=day_s)

    ### Get the max non-null date
    max_dt = data_frame[date_col].max()

    ### Get index of missing date values
    NaT_index = data_frame[data_frame[date_col].isnull()].index

    ### Loop through index; Set incremental date value; Increment variable by 1 day
    for i in NaT_index:
        data_frame[date_col][i] = max_dt + _day
        _day += dt.timedelta(seconds=day_s)

### Execute function
fill_dates(data, 'Date')

Исходный кадр данных:

        Date
0 2014-12-29
1 2014-12-30
2 2014-12-31
3        NaT
4        NaT
5        NaT
6        NaT

После запуска функции:

        Date
0 2014-12-29
1 2014-12-30
2 2014-12-31
3 2015-01-01
4 2015-01-02
5 2015-01-03
6 2015-01-04
0
ответ дан Mark Moretto 19 March 2019 в 11:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: