繁体   English   中英

根据值筛选行

[英]Filter rows based on value

如果“b”的字符串包含来自 dataframe df2 的“b2”字符串,我想保留 dataframe df 的行

import pandas as pd

d = {'a': [100, 125, 300, 235], 'b': ["abc","ghf" "dfg", "hij"]}
df = pd.DataFrame(data=d, index=[1, 2, 3, 4])

print(df)

     a    b
1  100  abc
2  125  ghf
3  300  dfg
4  235  hij 

d2 = {'a2': [10, 25, 30], 'b2': ["bc", "fg", "op"]}
df2 = pd.DataFrame(data=d2, index=[1, 2, 3])

print(df2)
   a2  b2
1  10  bc
2  25  fg
3  30  op

output 应如下所示:

     a    b
1  100  abc
2  300  dfg

我尝试了以下但没有用。

for majstring in df.b:
    for substring in set(df2.b2):
        if substring in majstring:
            pass
        else:
            df.drop(df.loc[df['b'] == majstring], inplace=True)

尝试这个:

mask = sum([df['b'].str.contains(v) for v in df2['b2']]).astype(bool)
filtered_df = df[mask]

Output:

>>> filtered_df
     a    b
1  100  abc
3  300  dfg

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM