Я нашел решение проблемы. Вместо этого можно использовать Fillna вместе с картой:
all_data['item_price'] = all_data['item_price'].fillna(
all_data['item_id'].map(
all_data.groupby('item_id')['item_price'].mean().compute()
)
)
Это избавляет от проблемы дублирования осей. Помните, что вы должны использовать compute, как видно из кода внутри функции map, чтобы он работал без ошибок.
Нет. Который' Поэтому я часто делаю файл .bat или .sh с этими параметрами и рекомендую пользователям запускать его вместо .jar. К сожалению, немного уродливо открывать окно командной строки, но с этим ничего не поделаешь.
В качестве дополнительного преимущества, если ваше приложение зависает, вы можете попросить пользователей поставить паузу
в пакетный файл (или сделайте это самостоятельно), и затем вы сможете увидеть любую возникающую трассировку стека.
Редактировать: Вы также можете использовать исполняемую оболочку, такую как JSmooth или Launch4J вместо командного файла. Однако вы потеряете некоторую кроссплатформенную совместимость.
если ваше приложение зависает, вы можете дать пользователям указание поместить pause
в пакетный файл (или сделать это самостоятельно), а затем вы можете увидеть любую возникающую трассировку стека.
Редактировать: Вы можете также используйте исполняемый файл оболочки, например JSmooth или Launch4J вместо командного файла. Однако вы потеряете некоторую кроссплатформенную совместимость.
если ваше приложение зависает, вы можете дать пользователям указание поместить pause
в пакетный файл (или сделать это самостоятельно), а затем вы можете увидеть любую возникающую трассировку стека.
Редактировать: Вы можете также используйте исполняемый файл оболочки, например JSmooth или Launch4J вместо командного файла. Однако вы потеряете некоторую кроссплатформенную совместимость.
Вы можете снова запустить jar с помощью Runtime.getRuntime (). Exec () с нужными вам опциями. В банке может содержаться более одного метода main () (в разных классах), и один из них можно вызвать другим с помощью exec ().
Вы можете использовать JSmooth или подобную оболочку, которая создает EXE-файл, который запускает JVM с необходимыми параметрами. Таким образом, вы можете избежать файла .bat и его диалогового окна консоли. Еще один способ - запустить реальную программу в новом процессе, используя Runtime.exec или ProcessBuilder.
Вместо двойного щелчка по файлу .jar вы можете использовать пакетный файл, который запускает java -jar -Xms -Xmx your_file.jar
. С точки зрения пользователя, это то же самое, но дает вам больше контроля над командой, которая фактически выполняется.