我的数据设备类如下:
Base G Pref Sier Val Other latest_class d_id
0 2 0 0 12 0 Val 38
12 0 0 0 0 0 Base 39
0 0 12 0 0 0 Pref 40
0 0 0 12 0 0 Sier 41
0 0 0 12 0 0 Sier 42
12 0 0 0 0 0 Base 43
0 0 0 0 0 12 Other 45
0 0 0 0 0 12 Other 46
0 12 0 0 0 0 G 47
0 0 12 0 0 0 Pref 48
0 0 0 0 0 12 Other 51
0 0 8 5 0 0 Sier 53
0 0 0 0 12 0 Val 54
0 0 0 0 12 0 Val 55
我只想选择设备所在的行(或设备): 1至少连续三个月在最新班级上课 2我需要过滤掉latest_class='Other'的记录。 三。现在上面的数据是一年的数据,对于一些设备,比如(38),有两个类设备是G和的一部分瓦尔。这些我需要过滤掉的设备类型。在
因此,预期产出将是:
^{pr2}$我做了以下操作,只获取了最近的\u类中的值大于3的记录:
i = np.arange(len(device_class))
j = (device_class.columns[:-1].values[:, None] == device_class.latest_class.values).argmax(0)
device_class_latest = device_class.iloc[np.flatnonzero(device_class.values[i,j] >= 3)]
有人能帮我吗?在
我不太确定我是否正确地理解了你的数据结构。我假设前6列中的值是某人在班上的月数?如果是,请尝试以下解决方案:
输出如您所愿:
^{pr2}$请注意,为了清楚地标识每个步骤,我已经过多地赘述了,但是您可以将这些行组合在一起以创建一个更简洁的脚本。在
另外,final filter可以定义为一个函数,并使用Pandas
apply
方法而不是使用iterrows
来应用。在相关问题 更多 >
编程相关推荐