Вы можете попробовать:
nlargest = df.groupby('Influencer')['Value'].nlargest(2).reset_index()['level_1'].values
nsmallest = df.groupby('Influencer')['Value'].nsmallest(2).reset_index()['level_1'].values
result = pd.concat([df.iloc[nlargest], df.iloc[nsmallest]]).sort_index()
print(result)
Вывод
Unit Influencer Value
0 A foo 321
1 B foo 200
3 D foo 12
4 E foo 3
5 A bar 999
6 B bar 209
9 E bar 15
10 F bar 2
Люди использовали Max MSP, чтобы сделать такого рода вещь с Midi и созданием видео сопровождения или просто сопровождения Midi. Это - абсолютно зависящее от домена приложение, которое, вероятно, было вдохновлено светской беседой или чем-то, которое едва мог любить любой настоящий программист, но музыканты-программисты делают.
Несмотря на текст на сайте я просто связался с, и то, что 'все' используют коммерческую версию, это был не всегда коммерческий продукт. Ircam в конечном счете выпустил свое собственное происхождение. Это назвало jMax. PureData, упомянутый в другом сообщении вот, другой переписывает того происхождения.
Существует также CSound; который не был предназначен, чтобы быть в реальном времени, но вероятно может быть довольно в реальном времени теперь, когда Вам сравнили достойный компьютер туда, где запущенный CSound.
Некоторые люди также взломали расширения Macromedia Director для обеспечения выполнения материала midi в Малопонятном жаргоне... Это очень устарело, и следовательно некоторые из них переместились в более современные среды Adobe.
Вы могли бы также посмотреть на ChucK и SuperCollider, два самых популярных 'реальных' музыкальных языка программирования в реальном времени.
Кроме того, Вы могли бы быть удивлены тем, насколько можно выполнить с Ableton Живые стойки.
(и это - CSound. Нет' в конце)
см. также:
Я понятия не имею, на самом деле ли на второй реален или стоит посмотреть. Keykit, однако.
Я использовал PyAudio вполне экстенсивно для контакта с необработанными аудиовходами и нашел, что это очень unpythonic, действуя намного больше как очень тонкая обертка по коду C. Однако, если Вы имеете дело с midi, скорее затем необработанными формами сигнала, затем Ваши задачи вполне немного более просты, и Python должен быть достаточно довольно быстрым, если Вы не играете в 10 000 ударов в минуту :)
Некоторые проблемы: обнаруживая одновременность, гармоника (формальный - т.е. структура хорды) анализ.
Это - также 80/20 проблема, что при ограничении позволенных последовательностей аккордов, затем это становится вполне немного более простым. В конце концов, что делает среднее "манипулирование", так или иначе, правильно?
(Кроме того, в conf's электронной музыки я был также, существует много людей, делающих различные эксперименты сопровождения в реальном времени на основе входного звука и перемещение).Удачи!
Вы могли бы связаться с Gary Lee Nelson в отделе TIMARA в Оберлине. 20 лет назад я сделал проект, который автоматически сгенерировал ритм-секцию для 12 блюзов панели, и я вспоминаю его описывающий инструмент, который он знал этого, сделал по существу, что Вы описываете.
Взгляд на PureData. Это может сделать, обширный анализ midi и люди используют его для производительности.
Действительно, вот видео, которое высвечивается мимо экрана puredata. Это показывает кому-то взаимодействующему с довольно сложным инструментом с помощью PD.
Кроме того, взгляд на CSounds.