【问题标题】:is there a method to filter into dataframe?有没有过滤到数据框的方法?
【发布时间】:2021-03-29 16:59:13
【问题描述】:

我有一个像这样的数据框:

id      ;   dic
AZE21   ; {"Sport20" : 3 , "Football12":5, "Handball43":19,"Tennis98":32}
BA433   ; {"voiture23": 5 , "BMW32" : 19 , "Vélo81":10}
PA234   ; {"TV98": 12 , "Ordinateur83": 19 } 

我有一个类似 ["Sport","TV","Tennis"] 的列表。所以我想从“dic”的每一行中删除这个列表中的术语。 例如这一行:

AZE21   ; {"Sport20" : 3 , "Football12":5, "Handball43":19,"Tennis98":32}

我们要删除“Sport20”、“Tennis98”,因为列表中有“Sport”和“Tennis”......

我想要一个像这样的输出:

id      ;   dic
AZE21   ; { "Football12":5, "Handball43":19}
BA433   ; {"voiture23": 5 , "BMW32" : 19 , "Vélo81":10}
PA234   ; { "Ordinateur83": 19 } 

代码:

import pandas as pd
import numpy as np

lst1 = ["AZE21","BA433","PA234"]
lst2 = [{"Sport20" : 3 , "Football12":5, "Handball43":19,"Tennis98":32},{"voiture23": 5 , "BMW32" : 19 , "Vélo81":10},{"TV98": 12 , "Ordinateur83": 19 } ]
df = pd.DataFrame(list(zip(lst1,lst2)), columns = ['id','dic'])

【问题讨论】:

  • 从标签中,您正在使用熊猫。你能粘贴这个数据框的熊猫表示吗?
  • 感谢您编辑了帖子
  • @jakub 我编辑了帖子

标签: python python-3.x pandas dataframe pandas-groupby


【解决方案1】:

Series.map() 与自定义函数一起使用,如下所示:

lst_target = ["Sport","TV","Tennis"]    

def match_partial_key(dic):
    dic_keys = list(dic.keys())
    for key in dic_keys:
        for l in lst_target:
            if key.startswith(l):
                dic.pop(key)
    return dic

df['dic'] = df['dic'].map(match_partial_key)





print(df)

      id                                          dic
0  AZE21          {'Football12': 5, 'Handball43': 19}
1  BA433  {'voiture23': 5, 'BMW32': 19, 'Vélo81': 10}
2  PA234                         {'Ordinateur83': 19}

【讨论】:

    猜你喜欢
    • 2021-07-04
    • 2020-12-13
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    相关资源
    最近更新 更多