Как определить тип столбца, чтобы затем осуществить действия по условию?

Есть CSV и в нём есть столбец, в котором есть некоторые значения разного типа, но их всех можно определить в две категории: содержащие буквы и без букв. То есть:

  • категория с буквами, выглядят примерно так: A1_AAA_aaa-11
  • без букв выглядят примерно так: 111111-111

Все данные имеют тип object в данном столбце (проверила через df.info()).

Есть пример таблица CSV, над которой нужно совершать преобразования:

Категория  1  |Категория 2|Показатель_1|Показатель_2|
______________|___________|____________|____________|
A1_AAA_aaa-11 |ZZZ_1_aaa_1|2           |3
_____________ |___________|____________|____________|
111111-111    |ZZZ_2_aaa_b|1           |1
______________|___________|____________|_____________
222222-222    |AAA_s_12a_2|1           |4
______________|___________|____________|_____________
333333-333    |AAA_s_12a_2|2           |3
______________|___________|____________|_____________
B1_BBB_bbb-11 |CCC_s_12a_2|0           |0

Значит, после преобразования будет получена новая таблица таблица такого вида (Результат):

Категория по буквам |Категория по аббривиатуре|Сумма показателей|
____________________|_________________________|_________________|
      Буквенная     |ZZZ                      |        5        |
      ______________|_________________________|_________________|
      Численная     |ZZZ                      |        2
      ______________|_________________________|_________________|
      Численная     |AAA                      |        10
      ______________|_________________________|_________________|
      Буквенная     |CCC                      |        0        |

Ответы (2 шт):

Автор решения: dIm0n

Вот так вот можно проверить, есть ли буква в строке:

s1 = 'hell_o1'
s2 = '1111121'

print(any(map(str.isalpha, s1))) # True
print(any(map(str.isalpha, s2))) # False
→ Ссылка
Автор решения: MaxU

Пример:

import numpy as np

res = pd.DataFrame({
  "Категория по буквам": np.where(
        df["Категория 1"].str.contains(r"[^-\d]"), 
        "Буквенная", 
        "Численная"),
  "Категория по аббривиатуре": df["Категория 2"].str[:3]}, 
  index=df.index)
res["Сумма показателей"] = df.sum(axis=1)

результат:

In [4]: res
Out[4]:
  Категория по буквам Категория по аббривиатуре  Сумма показателей
0           Буквенная                       ZZZ                  5
1           Численная                       ZZZ                  2
2           Численная                       AAA                  5
3           Численная                       AAA                  5
4           Буквенная                       CCC                  0
→ Ссылка