【问题标题】:Column-wise string counts for multiple columns in a pandas DataFramepandas DataFrame 中多列的按列字符串计数
【发布时间】:2020-07-07 06:52:10
【问题描述】:

我的数据框如下:

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

我想要一个如下的结果,它找到具有“-->”列的值计数并将其转置,结果如下数据框:

Column Count
Name   3
Marks  1
Place  1

这个 df 是 eg.This datframe 是动态的,并且在每次运行中都会发生变化,就像在 2nd Run 中一样,我们可能有名称、标记、地点或名称、标记或其他任何东西,所以代码应该是动态的,可以在任何 df 上运行。

【问题讨论】:

  • 链接中附有数据框正确格式:“在此处输入图像描述”格式有点失真。
  • 不应该是“3, 1, 2”吗?

标签: python python-3.x pandas string


【解决方案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

【讨论】:

  • 如果我运行第一个选项,我将收到 0
  • 运行 applymap 的第二个选项时:“”类型的参数 'numpy.int64' 在索引号处不可迭代
  • @Raunak 你可能忘记分配它了?至于第二个问题,请检查我的编辑。不要忘记分配它:df['result'] = df.select_dtypes(...)...
猜你喜欢
  • 2020-01-19
  • 2020-12-23
  • 1970-01-01
  • 2022-12-29
  • 2014-09-05
  • 2018-03-16
  • 2012-08-20
  • 1970-01-01
  • 2013-08-01
相关资源
最近更新 更多