【问题标题】:How to select specific orders sets by its last value?如何通过最后一个值选择特定的订单集?
【发布时间】:2020-12-24 16:03:07
【问题描述】:

对于我的数据框:

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]

【问题讨论】:

  • value的数据类型是什么?是int 还是str
  • @HirushaFernando 我添加了数据框示例

标签: python python-3.x dictionary set


【解决方案1】:

我是用 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"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 2012-01-24
    相关资源
    最近更新 更多