删除两列包含部分字符串的行

时间:2019-05-01 12:42:14

标签: python pandas

我有一个包含2列(订单和产品)的数据框。我想从产品列中过滤具有两个(在许多键和产品代码中)属性的订单列。

尝试过熊猫字符串,但是它什么也没做。

orders = df_ipp_h_complex_f[df_ipp_h_complex_f['PRODUCT'].str.contains(("1666-K030-V001|1666-K037-V001|1666-K020-V002")) & df_ipp_h_complex['PRODUCT'].str.contains("MC")]

期望得到包含没有产品密钥和代码的订单的df。

实际上它给出的过滤器行数为0

例如,我希望以下代码返回row1,row2和row4作为输出:

df = pd.DataFrame.from_dict({'a': ['h', 'hxx', 'gxx', 'bxx'], 
    'b':['ac', 'xxz', 'bc', 'xxy']})

df[df['b'].str.contains('a') & df['b'].str.contains('xx')]

1 个答案:

答案 0 :(得分:0)

我尝试将您的代码复制到一个玩具示例中(名称更简单,因此更易于阅读...),并且似乎可以正常工作(在pandas版本0.21.1中)。 我将发布此代码示例,看看是否可以找到其他不同的地方。希望这会有所帮助。

import pandas as pd

df = pd.DataFrame.from_dict({'a': ['h', 'hxx', 'gxx', 'bxx'], 
                             'b':['a', 'bxx', 'b', 'cxx'],
                            'c': ['one', 'two', 'three', 'four']})
df[df['a'].str.contains('xx') & df['b'].str.contains('xx')]