【问题标题】:Pandas Dataframe count availability of string in a listPandas Dataframe 计算列表中字符串的可用性
【发布时间】:2014-09-05 11:02:49
【问题描述】:

假设我有一个 Pandas DataFrame,如下所示。

In [31]: frame = pd.DataFrame({'a' : ['A/B/C/D', 'A/B/C', 'A/E','D/E/F']})

In [32]: frame
Out[32]: 
         a
0  A/B/C/D
1    A/B/C
2      A/E
3    D/E/F

我有如下字符串列表。

In [33]: mylist =['A/B/C/D', 'A/B/C', 'A/B']

mylist 中的两个模式在我的 DataFrame 中可用。所以我需要输出 2/3*100 = 67%

In [34]: pattern = '|'.join(mylist)
In [35]: frame.a.str.contains(pattern).count()

这不起作用。获得预期输出的任何帮助。

【问题讨论】:

    标签: python list pandas


    【解决方案1】:

    你可以这样做:

    In [1]: len(frame[frame.a.isin(mylist)])/float(len(mylist)) * 100
    Out[1]: 66.66666666666666
    

    或者用你的方法:

    In [2]: pattern = '|'.join(mylist)
    In [2]: count = frame.a.str.contains(pattern).sum() # will add up True values
    In [3]: count/float(len(mylist))*100
    Out[3]: 66.666666666666
    

    【讨论】:

      猜你喜欢
      • 2020-01-04
      • 2020-01-19
      • 1970-01-01
      • 2019-02-08
      • 2021-04-14
      • 2020-12-23
      • 2013-08-01
      • 2019-10-03
      相关资源
      最近更新 更多