Удаление нескольких столбцов файлов CSV на основе определенных условий на Python - PullRequest
1 голос
/ 11 апреля 2020

У меня есть файл CSV, содержащий несколько столбцов (почти 100). Как я могу отфильтровать несколько столбцов одновременно, используя определенные критерии в Python? Чтобы быть более точным, многие из столбцов мне не нужны. Как можно отфильтровать файл?

PS: я начинающий пользователь.

Ответы [ 4 ]

1 голос
/ 14 апреля 2020

Если вы хотите удалить все нулевые значения из столбца данных, вы должны выполнить следующие шаги (предположим, что у вашего данных есть имя df)

  1. Заменить все нулевые значения на nan первый
import numpy as np
import pandas as pd

df = df.replace(0, np.nan)

Удалить значение nan, используя метод dropna, в pandas
df = df.dropna(axis=1, how='all')

Параметр axis=1 предназначен для назначения правила удаления для columnwise. И how=all для проверки всех значений внутри этого столбца.

Таким образом, однострочный ответ ниже

df = df.replace(0, np.nan).dropna(axis=1, how=all)
0 голосов
/ 11 апреля 2020

Допустим, у вас есть следующий контент в CSV-файле

Col1, Col2, Col3
1, a, 0
2, b, 0
3, d, 1

Прочитайте его в pandas фрейме данных, используя следующий скрипт

import pandas as pd  

df=pd.read_csv(file)

Чтобы увидеть столбцы в фрейме данных, используйте

print(df.columns)

Это даст вам имена столбцов в df в форме списка, в этом случае ['col1', 'col2', 'col3']

Чтобы сохранить только указанные c столбцы (например, col1 и col3), вы можете использовать

df=df [ [ "col1","col3"] ]

Теперь, если вы напечатаете (df.columns), будет только ['col1', 'col3']

Отредактировано в ответ на комментарий:

Если вы хотите удалить столбцы, которые удовлетворяют определенному условию, вы можете использовать следующий скрипт

for column in df.columns:

    if 0 in df[column].values: # This will check if 0 is in values of column,  you can add any condition you want here

    print('Deleting column', column) # I assume you want to delete the column that fulfills the condition

    df=df.drop(columns=column) # This statement will delete the column fulfilling the condition
print("df after deleting columns:")
print(df)

Он напечатает

Удаление столбца col3

df после удаления столбцов:

col1, col2

1, a

2, b

3, c

0 голосов
/ 11 апреля 2020

Например, если у вас есть фрейм данных df со столбцами col1, col2, col3 и col4 и вам нужны только col1 и col2, вы можете сделать -

new_df = df[['col1', 'col2']]
0 голосов
/ 11 апреля 2020

Вы можете проанализировать CSV-файл как pandas dataframe, а затем поиграть. Пожалуйста, ознакомьтесь с документацией pandas о том, как читать файлы CSV. Вы можете извлечь столбец, который вы хотите на основе их имен заголовков. Также вы можете быстро применить математические операции. Однако для крупномасштабных вычислений обратите внимание, что python не подходит, так как каждый раз, когда вы импортируете свои библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...