首页 > 解决方案 > 如何从熊猫数据框中删除不在列表中的某些值?

问题描述

通过编写以下代码,我创建了一个数据框

data = [['A', 'B','D'], ['A','D'], ['F', 'G','C','B','A']] 
df = pd.DataFrame(data) 
df

在此处输入图像描述

我的目标是从数据框中删除不在下面列表中的值。

list_items = ['A','B','C']

我的预期输出如下

在此处输入图像描述

我曾尝试遍历循环中的值并一一检查,但假设数据框的大小非常大(9108、1616),并且列表有超过 130 项需要检查。在这种情况下,运行代码需要很长时间。请提出实现预期输出的最有效方法。

标签: pythonpandasnumpy

解决方案


我不认为这样做pandas是一个好主意,因为列在这里并不重要。使用列表更容易做到这一点,如果你真的需要它,你可以最终转换为 pandas 数据框。

# convert df to list of lists
data = df.values.tolist()
# filter each element of the list to contain only list_items values
data_filtered = [ [el for el in l if el in list_items] for l in data]
# convert back to dataframe
df_filtered = pd.DataFrame(data_filtered) 
print(df_filtered)
#   0   1    2
#0  A   B    None
#1  A   None None
#2  C   B    A

推荐阅读