Вот то, что я придумал:
import pandas
df = pandas.read_csv('test.tsv', header=None, sep='\s+',
parse_dates = [['date', 'time']],
names=['patient_id', 'date', 'time','drug'])
to_drop = set()
for _, patient in df.groupby('patient_id'):
meth_times = patient.loc[patient['drug'] == 'methadone']['date_time']
morph_doses = patient.loc[patient['drug'] == 'morphine']
for i, md in morph_doses.iterrows():
for mt in meth_times:
days_elapsed = (mt - md['date_time']).days
if days_elapsed < 1:
to_drop.add(i)
break
df = df[~df.index.isin(to_drop)]
Как и в случае с предложенным @ulmefors ответом, он многократно повторяется по каждой строке морфина / метадона, поэтому он несколько неэффективен, но если вы не работаете с огромным набором данных он должен выполнить работу достаточно быстро, чтобы это было незначительным. (Но в отличие от другого ответа, он повторяется только несколько раз в дозах морфина / метадона каждого пациента, а не через все возможные комбинации строк)
Я сейчас сравниваю JExcelApi и Apache POI. POI поддерживает Office 2007 в бета-версии и выглядит как лучший вариант (во многих отношениях)
Apache POI is the pure java answer to the question. 2007 format support is in beta right now.
OpenXLS may support it already (if GPL is fine for you). The commercial version of the same product (ExtenXLS) does support it.
Although not strictly part of the question, I should point out that any rewrite of access to Excel files will always have some deficiency over the original, so Joel Spolsky's advice is a good alternative, if you need it.
Некоторое время назад я проводил оценку poi и jexcel, и jexcel был намного лучше. Они оба используют много памяти в случае, если у вас очень большие файлы данных. Под этим я подразумеваю, что я не смог понять, как создать файл Excel через поток, так что мне не пришлось загружать весь файл в память.
Из http://poi.apache.org/apidocs/index.html
DDF - ужасный формат рисования Этот пакет содержит классы для декодирования формата чертежей Microsoft Office, также известного как escher, в настоящее время известного в POI как «ужасный формат рисования».
HPSF - ужасный формат набора свойств
HSSF - ужасный формат электронной таблицы
Мне нравятся эти ребята. Мы попробуем использовать POI для чтения файлов Excel, я также посмотрю на решение JExcel.