【问题标题】:How to Count the Number of Column Labels Named With Numbers?如何计算以数字命名的列标签的数量?
【发布时间】:2019-02-13 13:29:17
【问题描述】:

我想计算带有数字标签的列数。

  movie_id  1   2   5   6   7   10  12  13  borda   rank
0   1       5   4   4   4   0   4   0   3   24      1
1   2       3   0   3   0   0   0   0   3   9       3
2   3       4   0   0   0   0   0   0   0   4       4
3   4       3   0   0   0   5   4   5   5   22      2
4   5       3   0   0   0   0   0   0   1   4       4

在这种情况下,理想情况下要计算的列是'1''2''5''6''7''10''12''13'。换句话说,那些带有非数字命名标签的列将不会被计算在内。

我需要处理包含数千列的 DataFrame,因此无法通过人工计算列数。我的想法是这可能与lociloc 有关,但我不知道如何用代码来完成。

【问题讨论】:

  • 预期输出是什么?列 bordarank8 ?
  • 我的预期输出是 8。

标签: python pandas dataframe jupyter-notebook


【解决方案1】:

如果需要计算带有数字的列数,请使用 str.isnumericsum 计算 Trues 值:

out = df.columns.astype(str).str.isnumeric().sum()
print (out)
8

【讨论】:

  • @Nihal - 嗯,给我一些时间。
  • 如果 COLUMN 名称相同,这也将不起作用。例如1 和 1。
  • @GauravKP - 你为什么这么认为?这取决于 OP 是否需要多个 not 的唯一值
  • 我的意思是你用相同的列名运行你的代码。例如movie_id 1 1 1 6 7 10 12 13 borda rank
  • 不会有具有相同标签的列,所以这对我来说不是问题。非常感谢!
【解决方案2】:

如果您只是想计算以数字命名的列的数量,可以使用以下列表推导:

sum(str(x).isnumeric() for x in df.columns)
# 8

【讨论】:

  • 如果列名相同,它将工作。否则它会起作用。
  • 它对我来说很好用。没有相同的列名。谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
相关资源
最近更新 更多