#path
#путь
Вопрос:
Я ищу решение на Python для моих данных, которые находятся в файле Excel, содержащем разные операторы и числа. Я хочу отфильтровать строки на основе значений столбцов.
import pandas as pd
df=pd.read.excel("Data.xlsx")
df[df.Numbers.apply(lambda x: str(x).isdigit())]
df.to_excel("Data1.xlsx")
Какие-либо предложения, пожалуйста?
Ответ №1:
Вот один из способов выполнить фильтрацию, используя строковые инструменты pandas и логические маски. Я выполнил каждый шаг отдельно (легче тестировать и легче понимать в будущем).
# remove CAS and Cascade
mask = (df['Evaluations'].str.startswith('CAS') |
df['Evaluations'].str.contains('CASCADE'))
df = df[~mask]
# remove Numbers starting with 21 or 99
mask = (df['Numbers'].astype(str).str.startswith('21') |
df['Numbers'].astype(str).str.startswith('99'))
df = df[~mask]
# remove letter as 2th character (1 => zero-based indexing)
mask = df['Numbers'].astype(str).apply(lambda x: x[1].isalpha())
df = df[~mask]
# write to file
with open('Data1.xlsx', 'wb') as handle:
df.to_excel(handle)
print(df)
Evaluations Numbers
2 Nastolgic behaviours of people 75903324
3 google drive 76308764
6 Tesla's new inventions 83492836
7 Electric cars 78363522
Ответ №2:
1- Если в столбце с именем Evaluations его содержимое начинается с «OBS» или содержит слово «Устаревший», удалите эти строки
(^OBS|Obsolete)
2- Если значение столбца в столбце Numbers начинается с цифр «99» или «51», удалите эти строки
^(99|51)
3- Если 5-я цифра в столбце Numbers является буквенным символом, то также удалите эти строки
^d{4}w
Это регулярные выражения, которые помогут соответствовать этим условиям.
Комментарии:
1. Спасибо, @Hass, Но как я буду использовать эти команды сразу. не могли бы вы написать однострочный код или что-то еще, чтобы объяснить это лучше? Я новичок в Python