{
/your/first/command
/your/second/command
} &> /dev/null
Чтобы исключить вывод команд, у вас есть две возможности:
your_command "Is anybody listening?" >&-
Обычно вывод идет либо в дескриптор файла 1 (stdout), либо 2 (stderr). Если вы закроете дескриптор файла, вам нужно будет сделать это для каждого нумерованного дескриптора, так как &>
(ниже) является специальным синтаксисом BASH, несовместимым с >&-
: /your/first/command >&- 2>&-
Будьте внимательны, чтобы отметить порядок: >&-
закрывает stdout , что вы хотите сделать; &>-
перенаправляет stdout и stderr в файл с именем -
(дефис), что не то, что вы хотите сделать. Сначала он будет выглядеть одинаково, но последний создает в вашем рабочем каталоге бродячий файл. Легко запомнить: >&2
перенаправляет stdout на дескриптор 2 (stderr), >&3
перенаправляет stdout в дескриптор 3, а >&-
перенаправляет stdout в тупик (т. Е. Закрывает stdout). Также будьте осторожны, что некоторые команды могут не обрабатывать дескриптор закрытого файла особенно хорошо («write error: Bad file descriptor»), поэтому лучшим решением может быть ... /dev/null
, который принимает весь вывод и ничего не делает с ним. Это выглядит так: your_command "Hello?" > /dev/null
Для перенаправления вывода в файл вы можете направить как stdout, так и stderr в одно и то же место очень кратко, но только в bash: /your/first/command &> /dev/null
Наконец, делать то же самое для нескольких команд сразу, окружать все это в фигурных скобках. Bash рассматривает это как группу команд , агрегируя дескрипторы выходных файлов, чтобы вы могли перенаправить все сразу. Если вы знакомы с подоболочками с использованием синтаксиса ( command1; command2; )
, вы обнаружите, что фигурные скобки ведут себя почти точно так же, за исключением того, что, если вы не вовлечете их в трубу, скобки не будут создавать подоболочку и, таким образом, позволят вам установить переменные внутри.
{
/your/first/command
/your/second/command
} &> /dev/null
Для получения дополнительной информации, параметров и синтаксиса см. руководство bash о перенаправлениях .
Я думаю, что здесь лучше использовать пропущенные значения вместо ..
по to_numeric
с errors='coerce'
, поэтому делим работу очень хорошо:
df2 = pd.DataFrame({'Country': [ 'US', 'IT', 'FR'],
'Unit': [ 'USD', 'EUR', 'EUR'],
'Location': [ 'Hawai', 'Torino', 'Paris'],
'2000': [2, '..',6],
'2002': [8,10,12]
})
df2.set_index(['Country','Unit','Location'],inplace=True)
df2.columns=df2.columns.astype(int)
s= df.Value.unstack(fill_value=1)
df2 = df2.apply(lambda x: pd.to_numeric(x, errors='coerce')).mul(s)
print (df2)
2000 2002
Country Unit Location
US USD Hawai 3.528105 3.201258
IT EUR Torino NaN 22.408932
FR EUR Paris 11.205348 -11.727335
Если только не числовые значения ..
другое решение - использовать replace
:
df2 = df2.replace('..', np.nan).mul(s)