Как отфильтровать столбец Excel?

#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