python - 如何从熊猫数据框中删除不在列表中的某些值?
问题描述
通过编写以下代码,我创建了一个数据框
data = [['A', 'B','D'], ['A','D'], ['F', 'G','C','B','A']]
df = pd.DataFrame(data)
df
我的目标是从数据框中删除不在下面列表中的值。
list_items = ['A','B','C']
我的预期输出如下
我曾尝试遍历循环中的值并一一检查,但假设数据框的大小非常大(9108、1616),并且列表有超过 130 项需要检查。在这种情况下,运行代码需要很长时间。请提出实现预期输出的最有效方法。
解决方案
我不认为这样做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
推荐阅读
- trace - 如何使用 perf 探针打印 malloc 大小函数
- ios - 如何指定弹出框控制器的箭头指向的位置
- python - 在 django 中上传时使用 pil 调整图像大小
- java - 使用单元测试检查 Clojure 代码的架构
- c - C中realloc函数的时间复杂度是多少?
- c# - 在 asp.net webform 页面中注册 Src 属性并阻止 c# 代码
- angular - 如何从 Angular 组件设置(单击)属性
- amazon-redshift - 从 Redshift 导入 Sqoop
- regex - 使用 CFML 删除特定的 HTML 标签
- java - 带有 REST 的 Spring MVC 与 sshd 服务器集成