【问题标题】:Filter a pandas DataFrame using keys from a dictionary使用字典中的键过滤 pandas DataFrame
【发布时间】:2013-07-01 05:25:58
【问题描述】:

我有以下 pd.DataFrame:

AllData = 
a@a.6   f@s.2   c@c.2   d@w.4   k@a.3
1       8       3       3       8
4       4       7       4       3
6       8       9       1       6
3       4       5       6       1
7       6       0       8       1

我想创建一个新的 pd.DataFrame,其中仅包含名称为以下字典中键的列:

my_dict={a@a.6 : value1, c@c.2 : value2, d@w.4 : value5}

所以新的 DataFrame 将是:

FilteredData = 
a@a.6   c@c.2   d@w.4   
    1       3       3
    4       7       4
    6       9       1
    3       5       6
    7       0       8

最有效的方法是什么?

我试过用:

FilteredData = AllData.filter(regex=my_dict.keys)

但不出所料,这不起作用。欢迎任何建议/建议

干杯,亚历克斯

【问题讨论】:

    标签: python dictionary filter pandas dataframe


    【解决方案1】:

    Pandas 数据帧有一个名为 filter 的方法,它会返回一个新的数据帧。试试这个

    FilteredData = AllData.filter(items=my_dict.keys())
    

    【讨论】:

    • 不,我的意思是items,但我明白你在说什么。
    • 这个方法和@bdiamante 提出的方法有什么区别?
    • @user1083734 存在差异,但是我对熊猫比较陌生,认为我不能很好地解释它们。您可以查看github上的DataFrame源并自己查看。 __getitem__ 是 bdiamante 使用的“魔法”方法,filter 是我使用的方法。
    【解决方案2】:

    您也可以完全不使用过滤器方法,如下所示:

    FilteredData = AllData[my_dict.keys()]
    

    【讨论】:

    • 这两种方法的执行方式有区别吗?
    • 我实际上并不确定这里幕后发生的事情有什么不同,但肯定有人在这里?
    猜你喜欢
    • 1970-01-01
    • 2021-09-10
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2019-06-13
    • 2017-04-14
    • 2022-12-15
    相关资源
    最近更新 更多