Python 如何检查数据框中缺少的日期时间是否符合顺序?
我有一个熊猫数据框,有4列,其中包含一些零整数值和一些日期时间。我想创建一个具有真/假值的新列,以告诉我日期时间是否按时间顺序排列,即使有些是0 示例dfPython 如何检查数据框中缺少的日期时间是否符合顺序?,python,pandas,datetime,dataframe,Python,Pandas,Datetime,Dataframe,我有一个熊猫数据框,有4列,其中包含一些零整数值和一些日期时间。我想创建一个具有真/假值的新列,以告诉我日期时间是否按时间顺序排列,即使有些是0 示例df P1. P2. P3. P4. 0. 2011. 0. 2015 2015. 0. 0. 2013 然后,我想创建一个新列,根据它是否按时间顺序排列(例如,在上面的情况下,第1行为true,第2行为false),它只包含一个T/F 我曾考虑过使用if和else进行循环,但不知道是否有更干净的方法。仅供参
P1. P2. P3. P4.
0. 2011. 0. 2015
2015. 0. 0. 2013
然后,我想创建一个新列,根据它是否按时间顺序排列(例如,在上面的情况下,第1行为true,第2行为false),它只包含一个T/F
我曾考虑过使用if和else进行循环,但不知道是否有更干净的方法。仅供参考日期为完整格式2014-11-31 00:00:00
提前感谢。下面是一个遵循逻辑的方法:
- 使用
方法循环行轴=1李>apply
- 对于每行,删除零,计算差值并与零进行比较李>
- 如果没有一个差小于零,那么您可以声称它是按时间顺序(升序)排列的李>
df.apply(lambda r: ~(r[r != 0].diff() < 0).any(), 1)
#0 True
#1 False
#dtype: bool
df.apply(lambda r:~(r[r!=0].diff()<0.any(),1)
#0对
#1错误
#数据类型:bool
源DF:
In [250]: x
Out[250]:
P1. P2. P3. P4.
0 0.0 2011.0 0.0 2015
1 2015.0 0.0 0.0 2013
In [251]: x['new'] = x[x!=0].apply(lambda x: x.dropna().is_monotonic, axis=1)
In [252]: x
Out[252]:
P1. P2. P3. P4. new
0 0.0 2011.0 0.0 2015 True
1 2015.0 0.0 0.0 2013 False
解决方案:
In [250]: x
Out[250]:
P1. P2. P3. P4.
0 0.0 2011.0 0.0 2015
1 2015.0 0.0 0.0 2013
In [251]: x['new'] = x[x!=0].apply(lambda x: x.dropna().is_monotonic, axis=1)
In [252]: x
Out[252]:
P1. P2. P3. P4. new
0 0.0 2011.0 0.0 2015 True
1 2015.0 0.0 0.0 2013 False
结果:
In [250]: x
Out[250]:
P1. P2. P3. P4.
0 0.0 2011.0 0.0 2015
1 2015.0 0.0 0.0 2013
In [251]: x['new'] = x[x!=0].apply(lambda x: x.dropna().is_monotonic, axis=1)
In [252]: x
Out[252]:
P1. P2. P3. P4. new
0 0.0 2011.0 0.0 2015 True
1 2015.0 0.0 0.0 2013 False
看起来是个很好的答案,但那真的很难回答。。。你能把它打开一点吗?也许有一些评论?@JDLong补充道。