Как определить тип столбца, чтобы затем осуществить действия по условию?
Есть 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