[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()
, но любые решения этой проблемы будут весьма полезны.
Это добавит дополнительную дату к вашему фрейму данных.
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