问题描述
我正在运行以下代码:
import numpy as np
import pandas as pd
dfTestExample = pd.DataFrame(np.random.randint(0,100,size=(1000,4)),columns=list('ABCD'))
dfTestExample = dfTestExample.sort_values(["A","B"],ascending = [True,False])
dfTestExample.head(10)
产生
A B C D
303 0 84 13 96
728 0 43 48 32
558 0 35 49 49
286 0 34 17 4
652 0 29 53 4
292 0 18 62 29
139 0 17 63 99
718 1 91 6 48
611 1 83 19 75
208 1 80 35 73
dfTestExample.A.is_monotonic
True
dfTestExample.B.is_monotonic
False
如何检查A的所有值的B列是否也是蒙脱性的?
解决方法
对于每个groupby
的值,您可以使用A
将数据框分为不同的组:
monotonic = True
for group in df.groupby(['A']):
b = group[1].B
if not b.is_monotonic and not b.is_monotonic_decreasing:
monotonic = False
print(monotonic)
groupby
给您一个DataFrameGroupBy
对象。如果在该对象上进行迭代,则会得到index和DataFrame
对象的元组,并且可以分别处理它们。在您的情况下,分组的DataFrame
对象看起来像:
A B C D
303 0 84 13 96
728 0 43 48 32
558 0 35 49 49
286 0 34 17 4
652 0 29 53 4
292 0 18 62 29
139 0 17 63 99
和:
A B C D
718 1 91 6 48
611 1 83 19 75
208 1 80 35 73
请注意,如果您想知道数据集是单调递增还是递减,则必须同时检查两者,如示例所示。