pandas 如何在python列表解析中过滤子字符串

ijxebb2r  于 2023-01-19  发布在  Python
关注(0)|答案(1)|浏览(104)

我有一个 Dataframe 字典。我想创建一个包含子字符串"blue"的字典中所有 Dataframe 名称的列表。 Dataframe 字典中的 Dataframe 都不包含简称为"blue"的列。它是"blue"的一些变体,包括:"blue_max"、"blue_min"、"blue_average"等。关键是"blue"是我的 Dataframe 字典中所有 Dataframe 的列名中的子字符串。
因此,为了创建我的 Dataframe 字典中包含一列正好是"blue_max"的所有 Dataframe 的列表,我使用列表解析运行以下代码:

df_list = [x for x in df_dictionary if "blue_max" in df_dictionary[x].columns]

print(df_list)

这会打印出我的 Dataframe 字典中所有 Dataframe 名的列表,这些 Dataframe 有一个列名为"blue_max"。
然而,这不是我想要的。我想要一个 Dataframe 字典中的所有 Dataframe 名称的列表,其中至少包含一个名称包含子字符串"blue"的列。因此,如果其中一个 Dataframe 包含名为"blue_max"、"blue_min"或"blue_average"的列,则我希望将该 Dataframe 的名称添加到列表"df_list"中。
但是,当我试图查找包含子字符串"blue"的列的 Dataframe 时,运行:

df_list = [x for x in df_dictionary if "blue" in df_dictionary[x].columns]

print(df_list)

我只得到一个空列表:[].
这不是我想要的。我知道我的 Dataframe 字典中有一些 Dataframe 的列名称(标题)包含子字符串"blue",因为我知道有列"blue_max","blue_min"和"blue_average"。我如何修复我的代码,使其在 Dataframe 的列名中查找子字符串"blue",而不是具有确切名称"blue"的列名?

ecfsfe2w

ecfsfe2w1#

df_list = [x for x in df_dictionary if df_dictionary[x].columns.str.contains('blue').any()]

相关问题