首页 > 解决方案 > 如何通过最后一个值选择特定的订单集?

问题描述

对于我的数据框:

V1    V2   V3   V4   V5
1      1    1    1    0
1      1    1    0    1
0      1    1    0    1
1      0    0    0    0


我写了这段代码:

[{f'{k}:{v}' for k, v in d.items()} for d in df_train.iloc[:,:-1].to_dict('records')]

它给了我那些有序的集合:

[{'V1:1', 'V2:1', 'V3:1', 'V4:1', 'V5:0'},
{'V1:1', 'V2:1', 'V3:1', 'V4:0', 'V5:1'},
{'V1:0', 'V2:1', 'V3:1', 'V4:0', 'V5:1'},
{'V1:1', 'V2:0', 'V3:0', 'V4:0', 'V5:0'}]

我怎样才能只获得最后一个值(V5 的值)等于 1 的那些定单?所以我想得到这个:

[{'V1:1', 'V2:1', 'V3:1', 'V4:0', 'V5:1'},
{'V1:0', 'V2:1', 'V3:1', 'V4:0', 'V5:1'}]

这没有用:

[{f'{k}:{v}' for k, v in d.items()} for d in df_train.iloc[:,:-1].to_dict('records') if d[-1] == 1]

标签: pythonpython-3.xdictionaryset

解决方案


我用2个for循环做的,希望对你有帮助

for a in List:
    N=list(a)
    for b in N:
        if b.startswith("V5"):
            if "1" in str(b):
                print(a)

其次,如果您不将数据转换为固定格式。您可以使用简单的 BooleanMask,如图所示。:)

(如果您的值是数据框中的字符串,就像在您的集合中一样,您可以执行相同的操作,但只需使用 Data[Data["V5"]=="1"]

在此处输入图像描述


推荐阅读