Страницы

Поиск по вопросам

вторник, 9 июля 2019 г.

Удаление столбцов в csv файле с помощью python

У меня есть csv файл с данными(7 столбцов и 6063 строк). Названия столбцов что-то вроде ['id', 'seller', 'buyer', 'timestamp']. И соответствующие данные в строках. Нужно очистить этот файл от строк, где seller=buyer.
import pandas as pd data=pd.read_csv('file.csv', sep=';', decimal=',') dat=pd.DataFrame(data.T) for i in dat: if dat[dat.columns[i]][1]==dat[dat.columns[i]][2]: a=dat.columns[i]
Вот что-то такое у меня получается, а вот с удалением столбцов(теперь это уже столбцы) у меня проблема, так как это не столбцы, которые идут по-порядку, а перечислять название 1450 столбцов как-то не очень хочется. Подскажите, как здесь лучше поступить?


Ответ

Воспользуйтесь методом .query()
data = pd.read_csv('file.csv', sep=';', decimal=',', quotechar="'").query('seller != buyer')
Если надо сохранить обратно в CSV:
data.to_csv('output.csv', index=False)
PS вам не нужно транспонировать DataFrame для того, чтобы отфильтровать его
PPS если вы используете Pandas то старайтесь не использовать for loop - это не очень эффективно
Вот рабочий пример с учетом того, что в вашем CSV в качестве квотирующей кавычки используется '
CSV файл - D:\temp\buyer_seller.csv
'id';'seller';'buyer';'timestamp' 1;seller-1;buyer-1;2016-01-01 2;seller-2;buyer-2;2016-01-02 3;same-1;same-1;2016-01-11 4;same-2;same-2;2016-01-22
Код:
In [21]: pd.read_csv(r'D:\temp\buyer_seller.csv', sep=';') Out[21]: 'id' 'seller' 'buyer' 'timestamp' 0 1 seller-1 buyer-1 2016-01-01 1 2 seller-2 buyer-2 2016-01-02 2 3 same-1 same-1 2016-01-11 3 4 same-2 same-2 2016-01-22
In [22]: pd.read_csv(r'D:\temp\buyer_seller.csv', sep=';', quotechar="'") Out[22]: id seller buyer timestamp 0 1 seller-1 buyer-1 2016-01-01 1 2 seller-2 buyer-2 2016-01-02 2 3 same-1 same-1 2016-01-11 3 4 same-2 same-2 2016-01-22
In [23]: pd.read_csv(r'D:\temp\buyer_seller.csv', sep=';', quotechar="'").query('seller != buyer') Out[23]: id seller buyer timestamp 0 1 seller-1 buyer-1 2016-01-01 1 2 seller-2 buyer-2 2016-01-02
Альтернативно можно просто избавиться от кавычек в именах столбцов/колонок:
In [27]: df = pd.read_csv(r'D:\temp\buyer_seller.csv', sep=';')
In [28]: df.columns.tolist() Out[28]: ["'id'", "'seller'", "'buyer'", "'timestamp'"]
In [30]: df.columns = df.columns.str.replace("'", '')
In [31]: df.columns.tolist() Out[31]: ['id', 'seller', 'buyer', 'timestamp']

Комментариев нет:

Отправить комментарий