熊猫DataFrame中多个列的按列字符串计数

时间:2020-07-07 06:52:10

标签: python python-3.x pandas string

我的数据框如下:

Name            Marks       Place               Points
John-->Hile     50          Germany-->Poland    1
Rog-->Oliver    60-->70     Australia-->US      2
Harry           80          UK                  3
Faye-->George   90          Poland              4

enter image description here

我想要一个如下结果,该结果以“->”列为单位查找值的计数并将其转置,结果如下数据框所示:

Column Count
Name   3
Marks  1
Place  1

此df例如。此datframe是动态的,并且在第二次运行中可能会有所不同,例如在第二次运行中,我们可能会有Name,Marks,Place或Name,Marks或其他任何内容,因此代码应该是动态的,可以在任何df上运行。

1 个答案:

答案 0 :(得分:1)

您可以选择对象列,然后逐列执行计数和求和:

df.select_dtypes(object).apply(lambda x: x.str.contains('-->')).sum()

Name     3
Marks    1
Place    2
dtype: int64

另一个applymap怪异但有趣的方法:

(df.select_dtypes(object)
   .applymap(lambda x: '-->' in x if isinstance(x, str) else False)
   .sum())

Name     3
Marks    1
Place    2
dtype: int64