【问题标题】:Filter a pandas dataframe based on a derived field根据派生字段过滤熊猫数据框
【发布时间】:2016-06-17 13:56:09
【问题描述】:

我有以下查询,我执行并存储在 pandas 数据框中。

SELECT 
 mn as MachineName,
 dt as DateTime,
 REGEXP_EXTRACT(path, 'Name:([\\s\\S\\w\\W]*?)Domain:') AS Name1,
FROM TABLE DataGallery 

查询的输出是:

MachineName  DateTime           Name1
GOG1         2016-12-13 12:14   PI1
GOG1         2016-12-14 13:12   PI2

我正在尝试根据 df["Name1"] = "PI1" 过滤数据框。但这似乎行不通。我对“MachineName”和“DateTime”等表中的直接字段尝试了相同的操作,效果非常好。

不确定此过滤是否不适用于基于 REGEXP_EXTRACT 的派生字段。任何帮助将不胜感激。

【问题讨论】:

    标签: python pandas filter dataframe ipython


    【解决方案1】:

    如果需要过滤器df,IIUC 使用boolean indexing

    df = pd.DataFrame({'Name1': {0: 'PI1', 1: 'PI2'}, 
                       'DateTime': {0: '2016-12-13 12:14', 1: '2016-12-14 13:12'}, 
                       'MachineName': {0: 'GOG1', 1: 'GOG1'}}
                       ,columns=['MachineName','DateTime','Name1'])
    
    print (df)
      MachineName          DateTime Name1
    0        GOG1  2016-12-13 12:14   PI1
    1        GOG1  2016-12-14 13:12   PI2
    
    print (df.Name1 == 'PI1')
    0     True
    1    False
    Name: Name1, dtype: bool
    
    print (df[df.Name1 == 'PI1'])
      MachineName          DateTime Name1
    0        GOG1  2016-12-13 12:14   PI1
    

    str.contains 的另一个解决方案:

    print (df[df.Name1.str.contains('PI1')])
    
      MachineName          DateTime Name1
    0        GOG1  2016-12-13 12:14   PI1
    

    【讨论】:

    • 我尝试了所有这些选项,它适用于直接字段,但不适用于派生字段。当我在空字段上执行此操作时,它会抛出一个空数据框。
    • derived fields 是什么意思?如何模拟它?
    • 来自 REGEXP_EXTRACT 的字段,因为这些不是直接从表中提取的,所以我操纵表中的“路径”来获取“Name1”。
    • 我也试过这个:print(df[df.Name1 == '(.*)PI1(.*)']),即使这样也不行
    • 我想你可以使用str.contains - print (df[df.Name1.str.contains('PI1')])
    【解决方案2】:

    试试这个:确保它的大写“i”不是小写“L”。

      df[df["Name1"] == "PI1"] not df[df["Name1"] = "PI1"]
    

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 2020-05-05
      • 2013-06-09
      • 2014-12-27
      • 2019-12-09
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      相关资源
      最近更新 更多