Вам нужно назначить результат drop_duplicates
по умолчанию inplace=False
, чтобы он возвращал копию измененного df, так как вы не проходите param inplace=True
, ваш исходный df unmodified:
In [106]:
df = df.drop_duplicates('new', take_last=False)
df.groupby('new').max()
Out[106]:
A B C D new2
new
1 -1.698741 -0.550839 -0.073692 0.618410 1
3 0.519596 1.686003 1.395585 1.298783 2
4 1.557550 1.249577 0.214546 -0.077569 4
5 -0.183454 -0.789351 -0.374092 -1.824240 5
7 -1.176468 0.546904 0.666383 -0.315945 7
8 -1.224640 -0.650131 -0.394125 0.765916 8
10 -1.045131 0.726485 -0.194906 -0.558927 5
, если вы прошли inplace=True
, это сработало бы:
In [108]:
df.drop_duplicates('new', take_last=False, inplace=True)
df.groupby('new').max()
Out[108]:
A B C D new2
new
1 0.334352 -0.355528 0.098418 -0.464126 1
3 -0.394350 0.662889 -1.012554 -0.004122 2
4 -0.288626 0.839906 1.335405 0.701339 4
5 0.973462 -0.818985 1.020348 -0.306149 5
7 -0.710495 0.580081 0.251572 -0.855066 7
8 -1.524862 -0.323492 -0.292751 1.395512 8
10 -1.164393 0.455825 -0.483537 1.357744 5
Ваша проблема является результатом того, что form1 фокусируется, не panel1...., который, конечно, означает, что это - события form1, которые будут запущены, не события panel1.
я воссоздал Ваш сценарий со следующими изменениями в конструкторе в Form1 и проверил, что он запускает событие колесика прокрутки.
public Form1()
{
InitializeComponent();
/* --- Old code that don't work ---
this.panel1.MouseWheel += new MouseEventHandler(panel1_MouseWheel);
this.panel1.MouseMove += new MouseEventHandler(panel1_MouseWheel);
*/
this.MouseWheel += new MouseEventHandler(panel1_MouseWheel);
this.MouseMove += new MouseEventHandler(panel1_MouseWheel);
Form2 f2 = new Form2();
f2.Show(this);
}
}
Добавьте, что другое событие панели MouseEnter
и в ее Функции обратного вызова получает фокус ввода:
void MouseEnterEvent()
{
this.Panel.Focus();
}
Возможно, это будет работать на Вас?
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
Form2 f2 = new Form2();
f2.MouseWheel += new MouseEventHandler(panel1_MouseWheel);
f2.MouseMove += new MouseEventHandler(panel1_MouseWheel);
f2.Show(this);
}
private void panel1_MouseWheel(object sender, MouseEventArgs e)
{
if(e.Delta != 0) Console.Out.WriteLine(e.Delta);
}
}
Панель не может иметь самого фокуса, только объект, помещенный в панели, может иметь фокус. Панель только получит Событие mouseWheel, после того как что-то помещается в нем, и та вещь имеет фокус. Просто hoevering по панели и перемещению колеса мыши отправит событие в форму, не в панель.
Вот в чем разница между Вашими двумя примерами.
Я думаю, что Вы немного неправильно поняли мою проблему. На моей основной форме с ниже кода я don'g получают Событие mouseWheel:
public Form1()
{
InitializeComponent();
this.panel1.MouseWheel += new MouseEventHandler(panel1_MouseWheel);
this.panel1.MouseMove += new MouseEventHandler(panel1_MouseWheel);
}
, Но я действительно получаю событие с:
public Form1()
{
InitializeComponent();
this.MouseWheel += new MouseEventHandler(panel1_MouseWheel);
}
я надеюсь, что это более ясно без беспорядка Form2. Я просто пытаюсь получить События mouseWheel на Панели в моей основной форме.
С наилучшими пожеланиями,
James