Я предлагаю вам сделать что-то другое, это выполнить транспонирование, группу по префиксу строк (ваши исходные столбцы), sum и транспонировать снова.
Рассмотрим следующее:
df = pd.DataFrame({
'a_a': [1, 2, 3, 4],
'a_b': [2, 3, 4, 5],
'b_a': [1, 2, 3, 4],
'b_b': [2, 3, 4, 5],
})
Теперь
[s.split('_')[0] for s in df.T.index.values]
является префиксом столбцов. Таким образом,
>>> df.T.groupby([s.split('_')[0] for s in df.T.index.values]).sum().T
a b
0 3 3
1 5 5
2 7 7
3 9 9
делает то, что вы хотите.
В вашем случае обязательно разделите, используя символ '-'
.
Да, у вас есть другой процесс, связанный с одним и тем же портом.
TCPView (только для Windows) из Windows Sysinternals - мое любимое приложение, когда у меня есть ошибка JVM_BIND. Он показывает, какие процессы прослушивают порт. Он также предоставляет удобное контекстное меню, чтобы либо убить процесс, либо закрыть соединение, которое мешает.
В окнах
netstat -ano
будут перечислены все протоколы, порты и процессы прослушивания. Используйте
taskkill -pid "proces to kill" /f
, чтобы убить процесс, прослушивающий порт. например
taskkill -pid 431 /f
Порт уже используется каким-то другим процессом, поскольку @Diego Pino сказал, что вы можете использовать lsof в unix, чтобы найти процесс и убить соответствующий, если вы на окнах, используйте netstat -ano, чтобы получить все pids процесс и порты, которые все приобретают. найдите ваш предполагаемый порт и убейте.
, чтобы быть очень просто, просто перезагрузите компьютер, если это возможно:)
В Ubuntu / Unix мы можем решить эту проблему, выполнив 2 шага, как описано ниже.
1. Use netstat -plten |grep java
Он выдаст такой вывод
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1001 76084 9488/java
Здесь port no is 8080, на котором запущен Java-процесс. И его id процесса (pid) есть 9488
перед java (9488/java
).
2. Now to resolve the Address already in use problem you
have to kill this process using this command.
kill -9 9488
Здесь: -9 для полной остановки и 9488 это идентификатор процесса.
Теперь снова запустите сервер. Надеемся, что этот ответ вам поможет.
Если вы знаете, какой порт работает, вы можете ввести: lsof -i:<port>
.
Например, lsof -i:8080
, чтобы отобразить процесс (pid), запущенный на порту 8080.
Затем уничтожьте процесс с помощью kill <pid>
sudo apt-get install lsof
– Coffee
21 January 2016 в 03:37
В строке Windows CMD найдите идентификатор процесса, который содержит соединение на порту связывания, введя следующую команду:
C:> netstat -a -o
-a показать все соединения
- показать идентификатор процесса
И затем завершить процесс.
Я столкнулся с аналогичной проблемой в Eclipse, когда две консоли были открыты при первом запуске программы Server, а затем в программе клиента. Раньше я останавливал программу в единственной консоли, думая, что она закрыла сервер, но закрыла клиент, а не сервер. Я нашел запущенные процессы Java в диспетчере задач. Эта проблема была решена путем закрытия как серверных, так и клиентских программ с их отдельных консолей (Eclipse показывает консоль последней активной программы). Поэтому, когда я снова запустил программу Server, порт снова был открыт для захвата.
У вас есть другой процесс, выполняющийся на одном и том же порту.
Вы можете попробовать убить одну из java.exe-служб, запущенных в вашем диспетчере задач - ps убедитесь, что вы не убиваете eclipse, так как это указано как java.exe. Если ничего не работает, перезапуск вашей машины все равно исправит. Похоже, вы не закрываете сокет из предыдущего теста. Надеюсь, это поможет.
Перезагрузите компьютер один раз, я думаю, он будет работать. Он начал работать в моем случае. Еще одна вещь может быть выполнена в диспетчере задач и завершении процесса.
Для тех, кто ищет самый простой из ответов (поскольку это то, что мы обычно пропускаем), просто запустите свой проект и запустите его снова. В большинстве случаев мы забываем остановить проект, который мы запускали раньше, и когда мы повторно запускаем проект, он показывает такую проблему.
Я также прикрепляю фотографию, чтобы сделать ее более ясной (я использую «Набор инструментов Spring»). Так что вам нужно сделать либо щелкнуть кнопку в крайнем правом углу, если вы хотите перезапустить тот же проект или сначала нажать на кнопку, которая является 2-м справа, чтобы остановить ваш проект, а затем кнопку в крайнем левом углу ваш проект. Надеюсь, это решит проблему нескольких новых программистов. :)
Это означает, что какой-то другой процесс уже использует порт. В случае, если этот порт используется некоторыми другими критическими приложениями, и вы не хотите закрывать это приложение, лучший способ - выбрать любой другой порт, который будет свободен в использовании.
Настройте приложение для использования любого другого порта, который является бесплатным, и вы увидите, что ваше приложение работает.
(только для Windows)
Чтобы убить процесс, вам сначала нужно найти идентификатор процесса (pid)
. Запустив команду:
netstat -ano | findstr :yourPortNumber
Вы получите свой идентификатор процесса (PID), теперь, чтобы убить тот же процесс, запустите эту команду:
taskkill /pid yourid /f
Ваш порт должен быть занят каким-либо другим процессом. Таким образом, вы можете загрузить TCPView на https://technet.microsoft.com/en-us/sysinternals/bb897437 и убить процесс для используемого порта.
Если вы не узнайте свой порт, дважды щелкните на сервере, который не запускается, и нажмите «Открыть страницу свойств сервера» и нажмите на стеклянную рыбку слева. Здесь вы найдете порты.
(1) проверить, что порт используется или нет, убить этот процесс
$ lsof -i: [port]
(2) другой причиной является использование порта ipv6, решение:
изменить /etc/sysctl.conf
добавить это в файл
net.ipv6.conf.all.disable_ipv6 = 1
затем сделайте эффект
$ sudo sysctl -p /etc/sysctl.conf
или просто перезагрузите
Да, как сказал Гвидо Симоне, потому что другой процесс прослушивает тот же порт. Если вы находитесь в Ubuntu, вы можете просто убить этот процесс, выдав команду sudo kill $(sudo lsof -t -i:[port number])
ex: sudo kill $(sudo lsof -t -i:8080)
Но как только это не сработало для меня. я дал команду
$ lsof -i:[port]
и ничего не показывает.
Я проверил контейнеры докеров с помощью команды docker ps -a
, но не из них. Все контейнеры остановились (но я помню, я остановил один контейнер, который использовался один и тот же порт несколько минут назад.). что докер не является причиной, я останавливаю весь процесс докера с помощью команды sudo service docker stop
и повторю попытку. Удивительно, что затмение не показало ошибки в то время. Он отлично работает с моей программой.
Надеюсь, мой опыт поможет кому-то.
netstat
- это команда, которую вы ищете, с параметрами -a и -p,man netstat
является вашим другом для всех остальных :) – sox 26 July 2017 в 20:38