Похоже, что простой drop
будет работать для того, что вы хотите:
df1.drop(df2.index, errors='ignore', axis=0)
col1 col2
ID
1 9 5
2 8 4
Обратите внимание, что это предполагает, что ID
является индексом, в противном случае используйте [ 114] :
df1[~df1.ID.isin(df2.ID)]
ID col1 col2
0 1 9 5
1 2 8 4
Если Вы хотите быть предложенными (в противоположность передаче даты в в качестве параметра), используйте следующую логику (или что-то подобное):
date=
while [ -z $date ]
do
echo -n 'Date? '
read date
done
Тот цикл продолжит запрашивать дату, пока пользователь не введет что-то (ничто) кроме простого ВОЗВРАТА.
Если Вы хотите добавить некоторую простую проверку, и Вы используете версию KSH, это - KSH93 или лучше, сделайте что-то вроде этого:
date=
while [ -z $date ]
do
echo -n 'Date? '
read date
if [[ $date =~ ^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,4}$ ]]
then
break
fi
date=
done
См. ksh93 страницу справочника для большего количества информации.
В целом из сценария оболочки как параметры командной строки можно получить доступ:
$0, $1, ... $N
Таким образом, Вы могли заменить hardcoded дату как:
./room_xls.pl $1
И выполненный это как
./myscript 1/12/09
1$ является первым параметром командной строки. Это подходит к 9$. Проверьте это учебное руководство на более основной ksh синтаксис.