У меня есть фрейм данных, который имеет формат, как показано ниже. Я хочу получить минимальное значение времени для каждого столбца и сохранить его в списке, исключив определенное значение времени в формате (00:00:00) как минимальное значение в любом столбце в фрейме данных.
df =
10.0.0.155 192.168.1.240 192.168.0.242
0 19:48:46 16:23:40 20:14:07
1 20:15:46 16:23:39 20:14:09
2 19:49:37 16:23:20 00:00:00
3 20:15:08 00:00:00 00:00:00
4 19:48:46 00:00:00 00:00:00
5 19:47:30 00:00:00 00:00:00
6 19:49:13 00:00:00 00:00:00
7 20:15:50 00:00:00 00:00:00
8 19:45:34 00:00:00 00:00:00
9 19:45:33 00:00:00 00:00:00
Я попытался использовать код ниже, но он не работает:
minValues = []
for column in df:
#print(df[column])
if "00:00:00" in df[column]:
minValues.append (df[column].nlargest(2).iloc[-1])
else:
minValues.append (df[column].min())
print (df)
print (minValues)
Идея состоит в том, чтобы заменить 0
на отсутствующие значения, а затем получить минимальные временные дельты:
df1 = df.astype(str).apply(pd.to_timedelta)
s1 = df1.mask(df1.eq(pd.Timedelta(0))).min()
print (s1)
10.0.0.155 0 days 19:45:33
192.168.1.240 0 days 16:23:20
192.168.0.242 0 days 20:14:07
dtype: timedelta64[ns]
Или с получением минимального времени даты и последнего преобразования вывода в значения HH:MM:SS
:
df1 = df.astype(str).apply(pd.to_datetime)
s2 = (df1.mask(df1.eq(pd.to_datetime("00:00:00"))).min().dt.strftime('%H:%M:%S')
print (s2)
10.0.0.155 19:45:33
192.168.1.240 16:23:20
192.168.0.242 20:14:07
dtype: object
Или на раз:
df1 = df.astype(str).apply(pd.to_datetime)
s3 = df1.mask(df1.eq(pd.to_datetime("00:00:00"))).min().dt.time
print (s3)
10.0.0.155 19:45:33
192.168.1.240 16:23:20
192.168.0.242 20:14:07
dtype: object
Я попробовал «df1 = df.replace («00:00:00», np.nan).min()», и это также дает мне минимальное значение времени для первого столбца.
@Elwakdy - все столбцы заполнены форматом HH:MM:SS
? Как работают все 3 решения?
Да, он фильтруется в формате ЧЧ:ММ:СС и теперь работает. Я попробовал второй вариант выбора вашего кода, и он работает.
Теперь я вижу, что не могу задавать вопросы на вашем веб-сайте. Не могли бы вы дать мне разрешение, чтобы я мог задать любой вопрос позже?
@Elwakdy - у меня нет разрешения на это, вам нужно немного подождать.
Это дает мне минимальное значение времени только для первого столбца «10.0.0.155 19:45:25».