微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在不包括特定值的情况下获取数据框中的最小时间值

如何解决如何在不包括特定值的情况下获取数据框中的最小时间值

我有一个格式如下的数据框。我希望获取每列的最小时间值并将其保存在列表中,但不包括特定时间值,其格式 (00:00:00) 是数据框中任何列中的最小值。

class CreateLocations < ActiveRecord::Migration[4.2]

我尝试使用下面的代码,但它不起作用:

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

解决方法

想法是将 0 替换为缺失值,然后获得最小的 timedeltas:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。