Intro
Нижеприведенный сценарий позволяет запомнить уровни яркости в зависимости от источника питания, используемого ноутбуком. По умолчанию он составляет 50% от батареи, 90% - от переменного тока.
Intro
source_monitor.sh [-a INT] [-b INT] [-v] [-h]
-a set initial brightness on AC adapter
-b set initial brightness on batter
-v enable verbose output
-h prints this help text
Установка
Установка с использованием git через терминал:
Запустить [ f4] для установки git Запустить mkdir $HOME/bin. Пропустите этот шаг, если $HOME/bin уже существует cd $HOME/bin Запуск git clone https://github.com/SergKolo/sergrep.git Сценарий будет находиться в $HOME/bin/sergrep/source_monitor.sh. Убедитесь, что сценарий выполним с помощью chmod +x $HOME/bin/sergrep/source_monitor.sh Добавьте скрипт в качестве приложения для запуска. Найдите меню «Запуск приложений» в режиме поиска Unity Dash или Gnome. Кроме того, запустите меню gnome-session-properties в терминале, чтобы запустить меню. Добавьте полный путь к скрипту в качестве приложения для запуска, чтобы он запускался при каждом входе в графический интерфейс.В качестве альтернативы вы можете скопировать и сохранить исходный код сценария самостоятельно, chmod +x file и пройти описанный выше шаг #.
Чтобы сценарий автоматически запускался каждый раз при входе в систему в Gnome или Unity, используйте утилиту Startup Applications.
Установка
#!/usr/bin/env bash
#
###########################################################
# Author: Serg Kolo , contact: 1047481448@qq.com
# Date: June 18th 2016
# Purpose: Script that remembers and sets brightness
# depending on power sources
#
# Written for: https://askubuntu.com/q/788383/295286
# Tested on: Ubuntu 16.04 LTS , Ubuntu Kylin 16.04 LTS
###########################################################
# Copyright: Serg Kolo , 2016
#
# Permission to use, copy, modify, and distribute this software is hereby granted
# without fee, provided that the copyright notice above and this permission statement
# appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
ARGV0="$0"
ARGC=$#
wait_ac_connect()
{
while ! on_ac_power ; do : ; sleep 0.25 ; done
$VERBOSE && echo "<<< adapter plugged in"
}
wait_ac_disconnect()
{
while on_ac_power ; do : ; sleep 1.25 ; done
$VERBOSE && echo "<<< adapter unplugged"
}
change_brightness()
{
qdbus org.gnome.SettingsDaemon \
/org/gnome/SettingsDaemon/Power \
org.gnome.SettingsDaemon.Power.Screen.SetPercentage "$1"
}
get_brightness()
{
qdbus org.gnome.SettingsDaemon \
/org/gnome/SettingsDaemon/Power \
org.gnome.SettingsDaemon.Power.Screen.GetPercentage
}
print_usage()
{
cat <<EOF
source_monitor.sh [-a INT] [-b INT] [-v] [-h]
-a set initial brightness on AC adapter
-b set initial brightness on batter
-v enable verbose output
-h prints this help text
Copyright Serg Kolo , 2016
EOF
}
parse_args()
{
# boiler-pate code for reusing, options may change
local OPTIND opt # OPTIND must be there,
# opt can be renamed to anything
# no leading : means errors reported(which is what i want)
# : after letter means options takes args, no : - no args
while getopts "a:b:vh" opt
do
case ${opt} in
a) AC_PERCENTAGE="${OPTARG}"
;;
b) BAT_PERCENTAGE="${OPTARG}"
;;
v) VERBOSE=true
;;
h) print_usage && exit 0
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
done
shift $((OPTIND-1))
}
main()
{
# default values, if -a,-b, or -v options given
# they will be changed
local BAT_PERCENTAGE=50
local AC_PERCENTAGE=90
local VERBOSE=false # for debugging
parse_args "$@"
while true
do
if on_ac_power ; then
wait_ac_disconnect
AC_PERCENTAGE=$(($(get_brightness)+1)) # too long to explain why +1
# just try it for yourself
sleep 0.25
change_brightness "$BAT_PERCENTAGE" > /dev/null
else
wait_ac_connect
BAT_PERCENTAGE=$(($(get_brightness)+1))
sleep 0.25
change_brightness "$AC_PERCENTAGE" > /dev/null
fi
sleep 0.25
done
}
main "$@"
Вы можете использовать .equals для столбцов или целых фреймов данных.
df['col1'].equals(df['col2'])
Если они равны, этот оператор вернет True, else False.
Один из способов - использовать булевскую серию для индексации столбца df['one']. Это дает вам новый столбец, в котором записи True имеют то же значение, что и в той же строке, что и df['one'], а значения False равны NaN.
Булева серия задана только вашим if (хотя для & необходимо использовать and):
>>> df['que'] = df['one'][(df['one'] >= df['two']) & (df['one'] <= df['three'])]
>>> df
one two three que
0 10 1.2 4.2 10
1 15 70 0.03 NaN
2 8 5 0 NaN
Если вы хотите, чтобы значения NaN были заменены другими значениями, вы можете использовать fillna в новом столбце que. Я использовал 0 вместо пустой строки здесь:
>>> df['que'] = df['que'].fillna(0)
>>> df
one two three que
0 10 1.2 4.2 10
1 15 70 0.03 0
2 8 5 0 0
Вы можете использовать apply () и сделать что-то вроде этого
df['que'] = df.apply(lambda x : x['one'] if x['one'] >= x['two'] and x['one'] <= x['three'] else "", axis=1)
или если вы предпочитаете не использовать лямбда
def que(x):
if x['one'] >= x['two'] and x['one'] <= x['three']:
return x['one']
else:
''
df['que'] = df.apply(que, axis=1)
Оберните каждое отдельное условие в круглых скобках, а затем используйте оператор & для объединения условий:
df.loc[(df['one'] >= df['two']) & (df['one'] <= df['three']), 'que'] = df['one']
Вы можете заполнить несоответствующие строки, просто используя ~ (" а не «оператор»), чтобы инвертировать совпадение:
df.loc[~ ((df['one'] >= df['two']) & (df['one'] <= df['three'])), 'que'] = ''
Вам нужно использовать & и ~, а не and и not, поскольку работают операторы & и ~ элемент за элементом.
Конечный результат:
df
Out[8]:
one two three que
0 10 1.2 4.2 10
1 15 70 0.03
2 8 5 0