Я пытаюсь сравнить две даты, но получаю сообщение об ошибке «Можно сравнивать только объекты Series с одинаковыми метками». Я также пытался использовать iloc и .values, так как некоторые другие ответы были получены с использованием этого метода, но я получал различные другие ошибки с использованием этого метода.,Я не уверен что делать.Проблема в том, что я пишу:
elif group[1]["dtstart"] <= endDate
Ниже приведен мой полный пример кода.
Обратите внимание, что это не фактические данные, с которыми я работаю, я попытался сделать их очень похожими.Я по-прежнему получаю одну и ту же ошибку для обоих (могу сравнивать только идентично помеченные объекты Series),
НО, когда я включаю значения .value в этом коде (с поддельными данными) в этот раздел, например group[1]["dtstart"] <= endDate.values
Iполучить ошибку: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Когда я включаю .value в том же месте в реальных данных, я получаю ошибку: «Длина должна совпадать, чтобы сравнить», именно поэтому я попытался iloc и до сих пор не удалось.Я даже не уверен, что iloc или .values - это то, что нужно, и фальшивые данные и реальные данные не выдают одинаковую ошибку, когда я включаю либо один, но просто сохранение всего, что есть, выдает одинаковую ошибку как в фальшивом, так и в фальшивомreal, равный
«Может сравнивать только идентично помеченные объекты Series»
Любая помощь приветствуется.Спасибо!
import pandas as pd
from datetime import datetime
import numpy as np
pd.set_option('display.max_columns', None)
#Create a DataFrame
d = {
'ID':[1,2,3,3,1,1,2,2,4,4],
'dtstart':[pd.Timestamp('2018-01-01'), pd.Timestamp('2018-01-30'), pd.Timestamp('2018-03-01'), pd.Timestamp('2018-03-14'),
pd.Timestamp('2018-04-08'), pd.Timestamp('2018-04-27'), pd.Timestamp('2018-07-03'), pd.Timestamp('2018-07-17'),pd.Timestamp('2018-07-17'),pd.Timestamp('2018-01-20')],
'dtend':[pd.Timestamp('2018-01-06'), pd.Timestamp('2018-02-15'), pd.Timestamp('2018-03-05'), pd.Timestamp('2018-03-22'),
pd.Timestamp('2018-04-15'), pd.Timestamp('2018-05-06'), pd.Timestamp('2018-07-07'), pd.Timestamp('2018-07-28'),pd.Timestamp('2018-01-18'),pd.Timestamp('2018-01-22')]}
df = pd.DataFrame(d)
grouped = df.groupby(['ID'])
grouped.apply(lambda _df: _df.sort_values(by=['dtstart']))
count=0
df_CE = pd.DataFrame(columns=['ID', 'dtstart', 'dtEnd'])
for group in grouped:
months_enrolled=len(group)
if count == 0:
print("group[1][dtstart]===",group[1]["dtstart"])
startDate = group[1]["dtstart"]
endDate = group[1]["dtend"]
count += 1
# print("endDate==",TEST_endDate.dtypes)
elif group[1]["dtstart"] <= endDate:
print("yes")