我有一个数据框,并希望在其中一列包含某个字符串时查找所有行:
tmp = data_frame[data_frame["DESC"].str.contains(tag, na=False)]
但是,假设tag是一个列表,我希望列包含列表中的任何字符串,例如:
tmp = data_frame[(data_frame["DESC"].str.contains(tag[0], na=False)) | (data_frame["DESC"].str.contains(tag[1], na=False))]
现在,假设我有一个列表列表,而tag是其中的一个元素,我遍历这个列表列表:
for tag in tag_list:
tmp = data_frame[(data_frame["DESC"].str.contains(tag[0], na=False)) | (data_frame["DESC"].str.contains(tag[1], na=False))]
---do something with tmp
此外,现在假设tag_list是一个列表列表,但每个元素可能有不同的长度,所以有时标签有1个元素,有时2个,有时4个,等等。我怎样才能以独立的方式定义tmp标签的固定长度?
例如:
tmp = pandas.DataFrame(columns=["DESC"])
tmp.loc[0] = ["Hello"]
tmp.loc[1] = ["Hello"]
tmp.loc[2] = ["Hi"]
tmp.loc[3] = ["Good Morning"]
tag = ["Hi", "Hello"]
tmp2 = tmp[(tmp["DESC"].str.contains(tag[0], na=False)) | (tmp["DESC"].str.contains(tag[1], na=False))]
答案 0 :(得分:1)
这应该有效。你可以尝试一下,让我知道如有必要我会做出更正:
def select_tags(df_line, taglistlist):
for taglist in taglistlist:
for tag in taglist:
if df_line['DESC'].str.contains(tag, na=False)
# INSERT LOGIC HERE
pass
df.apply(select_tags, args=(taglistlist,), axis=1)