【问题标题】:How to filter a pandas list of numerical values?如何过滤熊猫数值列表?
【发布时间】:2023-02-02 20:07:53
【问题描述】:

我有一个这样的 df:

                     value_list  
0             [200000.00, 100.00, 25.00]                 
1                       [860000.00]                          
2                  [148000.00, 25.00]  

我想要一个新的列 filtered_list ,它将过滤掉小于 100 和大于 10000 的值,所以预期结果

                     value_list                              filtered_list
0             [200000.00, 100.00, 25.00]                     [100.00]
1                       [860000.00]                          []
2                 [148000.00, 25.00, 9500]                   [9500]

我怎样才能做到这一点?

我试过的:

df['filtered_list'] = df['value_list'].apply(lambda x: (e for e in x if e > 100 and e < 10000 ))

但这返回了一个生成器对象。请指教。

【问题讨论】:

  • 用例会让常规 python 函数完成这项工作,还是必须是 lambada 函数?
  • (e for e in x ..)(带括号)将构建一个生成器,而[e for e in x ...](括号)将构建一个列表

标签: python pandas


【解决方案1】:

我会避免apply并使用双列表组件.因此,假设 (df) 是您的数据框,请使用:

df["filtered_list"] = [[n for n in l if 100 <= n <= 10000]
                          for l in df["value_list"]]

输出:

print(df)

                value_list filtered_list
0  [200000.0, 100.0, 25.0]       [100.0]
1               [860000.0]            []
2   [148000.0, 25.0, 9500]        [9500]

【讨论】:

    猜你喜欢
    • 2019-05-21
    • 2020-08-08
    • 2019-04-04
    • 2017-12-15
    • 1970-01-01
    • 2019-08-22
    • 2022-10-24
    • 2016-01-05
    • 2021-11-02
    相关资源
    最近更新 更多