[英]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.