A spreadsheet to remove certain rows.
All the rows of its first column contains values started with “36” are to be removed, before saving to a new spreadsheet.
I use these codes (and need to split the columns afterwards in Excel). The example looks like this:
import xlwt
from xlrd import open_workbook
old_file = open_workbook('C:\original.xlsx')
old_sheet = old_file.sheet_by_index(0)
new_file = xlwt.Workbook(encoding='utf-8', style_compression = 0)
new_sheet = new_file.add_sheet('Sheet1', cell_overwrite_ok = True)
contents = []
for row in range(old_sheet.nrows):
a = str(old_sheet.cell(row,0).value)
b = str(old_sheet.cell(row,1).value)
if not a.startswith("36"):
contents.append(a + "," + b)
for c, content in enumerate(contents):
new_sheet.write(c, 0, content)
new_file.save('C:\result.xls')
It’s not really sufficient so I want to learn the Pandas way doing so.
I tried something like df.drop([«3649»]) but it doesn’t work.
What’s the proper Pandas way to remove the rows? Thank you.
В этом уроке рассмотрим основные моменты при работе с пакетом Pandas, который позволяет работать с Excel данными, как с двухмерными таблицами. Мы изучим как работать с самой таблицей, как массивом данных, с отдельными столбцами и строками, а также научимся делать отборы по условиям.
Для начала подготовим Excel файл с примером, который будем использовать в качестве источника данных (всю обработку данных будем делать в Python, без сохранения в Excel, для ускорения работы). Файл должен содержать лист «Данные» с такой информацией:
Сохраните файл с названием «Excel_Python-3.xlsx». Теперь запускаем Spyder, создаем новый скрипт и туда вносим следующий код, который позволит нам прочитать данные из вышеуказанного Excel файла в DataFrame, который мы будем использовать сегодня в примерах. Скрипт сохраняем в ту же папку, куда сохранили Excel файл.
import xlwings as xw
import pandas as pdwb=xw.Book(‘Excel_Python-3.xlsx’)
data_excel = wb.sheets[‘Данные’]
data_pd = data_excel.range(‘A1:D7’).options(pd.DataFrame, header = 1, index = False).value
print (data_pd)
Итак, данные прочитаны, внесены в DataFrame data_pd, с которым мы будем работать в дальнейшем.
Таблица
data_pd.shape — функция показывается количество строк и количество столбцов в таблице. В нашем случае получим (6, 4), т.е. в нашей таблице 6 строк (заголовок не считается) и 4 столбца.
data_pd.info() — получаем общую сводку о таблицу, в т.ч. какие столбцы, их названия, тип данных в столбцах, количество не пустых элементов. При выполнении функции на обучающем примере мы получим:
<class ‘pandas.core.frame.DataFrame’>
RangeIndex: 6 entries, 0 to 5
Data columns (total 4 columns):
Фамилия 6 non-null object
Имя 6 non-null object
Возраст 6 non-null float64
Доход 6 non-null float64
dtypes: float64(2), object(2)
memory usage: 320.0+ bytes
Работа со строками
data_pd = data_pd.append({‘Фамилия’:’Егоров’, ‘Имя’:’Михаил’, ‘Возраст’:’37’,’Доход’:’40000′}, ignore_index=True) — Функция Append добавляет строку в таблицу. В качестве первого аргумента в фигурных скобках мы указываем те данные, что хотим добавить в формате ‘Название столбца’ : ‘Значение’, вторым аргументом мы говорим о том, что нам не важно в какое место таблицы добавится строка (по умолчанию в конец таблицы).
data_pd.drop([0, 1], axis=0, inplace=True) — Функция Drop удаляет строки. Первым параметром в квадратных скобках мы указываем номера строк, которые хотим удалить (нумерация строк начинается в Pandas с 0), вторым аргументом указываем что хотим удалить строку (axis=0) или столбец (axis=1), последним аргументом говорим о том, что измения должны быть произведены непосредственно в той таблице, с которой мы работаем (inplace=True), в противном случае (inplace=False) Pandas создаст копию таблицы, где удалит указанные строки, что может привести к путаницу и ошибкам.
data_pd.head(3) — Выводит указанное количество строк с начала таблицы, в данном случае 3.
data_pd[:3] — Функция аналогичная head, получаем указанное количество строк с начала таблицы.
data_pd[-3:] — Получаем указанное количество строк с конца таблицы.
Работа со столбцами
data_pd.columns — Выводит названия столбцов в таблице. В нашем случае при выполнении функции получим следующее: Index([‘Фамилия’, ‘Имя’, ‘Возраст’, ‘Доход’], dtype=’object’)
data_pd.dtypes — Выводит тип данных в столбцах. В нашем случае:
Фамилия object
Имя object
Возраст float64
Доход float64
dtype: object
data_pd[‘Пол’] =[‘Муж.’,’Муж.’,’Муж.’,’Муж.’,’Муж.’,’Муж.’] — Добавляем новый столбец. В левой части в квадратных скобках указываем название столбца, в правой части — что в этом столбце должно содержаться. Обратите внимание, что количество записей должно равняться количеству строк в таблице, иначе получите ошибку «Length of values does not match length of index».
data_pd.drop([‘Фамилия’], axis=1, inplace=True) — Функция Drop, как и говорилось ранее, удаляет столбец или строку. В данном случае в качестве первого параметра в квадратных скобках указываем название столбца, далее указываем что удаляем именно столбец (axis=1), и не забываем указать что измения должны быть произведены непосредственно в той таблице, с которой мы работаем (inplace=True).
data_pd[[‘Фамилия’, ‘Имя’]] — Получаем данные только по отдельным столбцам, а не по всей таблице в целом.
Работа со строками и столбцами
data_pd.loc[[0, 1], [‘Фамилия’, ‘Имя’]] — Функция loc позволяет получить данные только по конкретным строкам и столбцам. Первым агрументом указываем номера строк, которых хотим получить, вторым — названия столбцов.
data_pd.iloc[[0, 1], [0, 1]] — Функция iloc позволяет получить данные обращаясь и к строкам и к столбцам по номерам. Показанный пример вернет теже данные, что и вариант выше (обратите внимание, что номерация столбцов, как и строк, в Pandas начинается с 0).
Отбор данных по условию
data_pd[(data_pd[‘Доход’] >= 30000) & (data_pd[‘Фамилия’] == ‘Петров’)] — Отбираем данные по двум условиям. В первом говорим о том, что доход должен быть больше 30 000, а фамилия сотрудника должна быть Петров. Обратите внимание, что используется логическое условие И (&) — это значит, что данные будут получены, если выполнены оба условия. При использовании логического условия ИЛИ (|), будут отобраны те строки, в которых выполняется хоть одно из указанных условий.
На сегодня все. Есть вопросы — задавайте в комментариях ниже.
Содержание
- Способ 1. Удаление строки в Pandas по ее индексу
- Способ 2. Удаление строки в Pandas по ее содержанию
- Способ 3. Удаление строки в Pandas по условию
- Таблица
- Работа со строками
- Работа со столбцами
- Работа со строками и столбцами
- Отбор данных по условию
- Как удалить все строки, в столбце которой содержится определенное слово/фраза?
- 1 ответ 1
- Удаление строк, содержащих пустые ячейки, из DataFrame панд
- Pythonic + Pandorable: df[df[‘col’].astype(bool)]
- Быстрее, чем ты думаешь
- Удалить из таблицы
- Примечания и предостережения
- Compression
- ptrepack
- Caveats
- DataTypes
Pandas представляет нам отличные инструменты для обработки данных, в том числе для удаления той информации, которая нам не нужна. В этой статье мы рассмотрим различные способы удаления строк из Dataframe Pandas.
import pandas as pd
city_data = <
‘Город’:[‘Москва’, ‘Казань’, ‘Владивосток’, ‘Санкт-Петербург’, ‘Калининград’],
‘Дата основания’:[‘1147’, ‘1005’, ‘1860’, ‘1703’, ‘1255’],
‘Площадь’:[‘2511’, ‘516’, ‘331’, ‘1439’, ‘223’],
‘Население’:[‘11,9’, ‘1,2’, ‘0,6’, ‘4,9’, ‘0,4’],
‘Погода’:[‘8’, ‘8’, ’17’, ‘9’, ’12’] >
city_df = pd.DataFrame(city_data)
city_df
В Pandas для удаления строк, а также столбцов используется метод drop. Его синтаксис следующий (обратите внимание, что необязательно использовать все параметры, можно только те, которые необходимы нам):
drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors=’raise’), где:
- labels – номера или названия столбцов для удаления
- axis – значение 0, если вы хотите удалить строки, либо 1, если планируете удалять столбцы
- index – определяет, какие строки надо удалить
- columns – определяет, какие столбцы надо удалить
- inplace – изменяет оригинальный Dataframe, если параметр равен True
- errors – игнорируются ошибки, если параметр задан как ignore
Способ 1. Удаление строки в Pandas по ее индексу
Для каждой строки в Dataframe Pandas присваивает индекс, обычно это число. В нашем учебном Dataframe, к примеру, у Москвы индекс 0, а у Калининграда 4. Давайте уберем запись с Владивостоком:
city_df.drop(labels = [4],axis = 0, inplace = True)
Способ 2. Удаление строки в Pandas по ее содержанию
Предположим, нам надо убрать строку с названием города «Казань», но мы не знаем его индекса и хотим ее удалить по названию. Для этого мы должны сначала изменить столбец с индексами и вместо цифровых значений задать данные из столбца «Город»:
Способ 3. Удаление строки в Pandas по условию
При помощи метода loc мы можем удалять строки по условию, к примеру мы хотим убрать из Dataframe те города, у которых площадь меньше 1 000 км2.
Так как мы будем применять математические условия, то сначала столбец «Площадь» мы должны перевести в формат int64:
city_df = city_df.loc[city_df[‘Площадь’] > 1000]
city_df
Спасибо за внимание. Дочитавшим до конца – традиционный бонус, наш ноутбук по этой статье.
Источник
Для начала подготовим Excel файл с примером, который будем использовать в качестве источника данных (всю обработку данных будем делать в Python, без сохранения в Excel, для ускорения работы). Файл должен содержать лист «Данные» с такой информацией:
import xlwings as xw
import pandas as pd
wb=xw.Book(‘Excel_Python-3.xlsx’)
data_excel = wb.sheets[‘Данные’]
data_pd = data_excel.range(‘A1:D7’).options(pd.DataFrame, header = 1, index = False).value
print (data_pd)
Итак, данные прочитаны, внесены в DataFrame data_pd, с которым мы будем работать в дальнейшем.
Таблица
data_pd.shape — функция показывается количество строк и количество столбцов в таблице. В нашем случае получим (6, 4), т.е. в нашей таблице 6 строк (заголовок не считается) и 4 столбца.
data_pd.info() — получаем общую сводку о таблицу, в т.ч. какие столбцы, их названия, тип данных в столбцах, количество не пустых элементов. При выполнении функции на обучающем примере мы получим:
RangeIndex: 6 entries, 0 to 5
Data columns (total 4 columns):
Фамилия 6 non-null object
Имя 6 non-null object
Возраст 6 non-null float64
Доход 6 non-null float64
dtypes: float64(2), object(2)
memory usage: 320.0+ bytes
Работа со строками
data_pd = data_pd.append(<‘Фамилия’:’Егоров’, ‘Имя’:’Михаил’, ‘Возраст’:’37’,’Доход’:’40000′>, ignore_index=True) — Функция Append добавляет строку в таблицу. В качестве первого аргумента в фигурных скобках мы указываем те данные, что хотим добавить в формате ‘Название столбца’ : ‘Значение’, вторым аргументом мы говорим о том, что нам не важно в какое место таблицы добавится строка (по умолчанию в конец таблицы).
data_pd.drop([0, 1], axis=0, inplace=True) — Функция Drop удаляет строки. Первым параметром в квадратных скобках мы указываем номера строк, которые хотим удалить (нумерация строк начинается в Pandas с 0), вторым аргументом указываем что хотим удалить строку (axis=0) или столбец (axis=1), последним аргументом говорим о том, что измения должны быть произведены непосредственно в той таблице, с которой мы работаем (inplace=True), в противном случае (inplace=False) Pandas создаст копию таблицы, где удалит указанные строки, что может привести к путаницу и ошибкам.
data_pd.head(3) — Выводит указанное количество строк с начала таблицы, в данном случае 3.
data_pd[:3] — Функция аналогичная head, получаем указанное количество строк с начала таблицы.
data_pd[-3:] — Получаем указанное количество строк с конца таблицы.
Работа со столбцами
data_pd.columns — Выводит названия столбцов в таблице. В нашем случае при выполнении функции получим следующее: Index([‘Фамилия’, ‘Имя’, ‘Возраст’, ‘Доход’], dtype=’object’)
data_pd.dtypes — Выводит тип данных в столбцах. В нашем случае:
Фамилия object
Имя object
Возраст float64
Доход float64
dtype: object
data_pd[‘Пол’] =[‘Муж.’,’Муж.’,’Муж.’,’Муж.’,’Муж.’,’Муж.’] — Добавляем новый столбец. В левой части в квадратных скобках указываем название столбца, в правой части — что в этом столбце должно содержаться. Обратите внимание, что количество записей должно равняться количеству строк в таблице, иначе получите ошибку «Length of values does not match length of index».
data_pd.drop([‘Фамилия’], axis=1, inplace=True) — Функция Drop, как и говорилось ранее, удаляет столбец или строку. В данном случае в качестве первого параметра в квадратных скобках указываем название столбца, далее указываем что удаляем именно столбец (axis=1), и не забываем указать что измения должны быть произведены непосредственно в той таблице, с которой мы работаем (inplace=True).
data_pd[[‘Фамилия’, ‘Имя’]] — Получаем данные только по отдельным столбцам, а не по всей таблице в целом.
Работа со строками и столбцами
data_pd.loc[[0, 1], [‘Фамилия’, ‘Имя’]] — Функция loc позволяет получить данные только по конкретным строкам и столбцам. Первым агрументом указываем номера строк, которых хотим получить, вторым — названия столбцов.
data_pd.iloc[[0, 1], [0, 1]] — Функция iloc позволяет получить данные обращаясь и к строкам и к столбцам по номерам. Показанный пример вернет теже данные, что и вариант выше (обратите внимание, что номерация столбцов, как и строк, в Pandas начинается с 0).
Отбор данных по условию
data_pd[(data_pd[‘Доход’] >= 30000) & (data_pd[‘Фамилия’] == ‘Петров’)] — Отбираем данные по двум условиям. В первом говорим о том, что доход должен быть больше 30 000, а фамилия сотрудника должна быть Петров. Обратите внимание, что используется логическое условие И (&) — это значит, что данные будут получены, если выполнены оба условия. При использовании логического условия ИЛИ (|), будут отобраны те строки, в которых выполняется хоть одно из указанных условий.
На сегодня все. Есть вопросы — задавайте в комментариях ниже.
Источник
Как удалить все строки, в столбце которой содержится определенное слово/фраза?
Всем привет, только недавно начал пользоваться и учить python. Хочу понять, как мне удалить все строки, в которых содержится слово ‘реф’ в столбце ‘тип авто’. Удалить нужно до строки сортировки.
1 ответ 1
Вот хочу вам помочь, читаю ваш вопрос «Хочу понять, как мне удалить все строки, в которых содержится слово ‘реф’ в столбце ‘тип авто’ .» Покажите мне в вашем скрипте, где вы не то что работаете, а хотя-бы упоминаете столбец ‘тип авто’? Долго думал над фразой Удалить нужно до строки сортировки . И не мог понять, какая строка сортировки может быть в той таблице, из которой надо что-то удалять. Вам не жаловаться надо, «я только начинаю учить python, пожалейте меня» . Вам надо учиться точно и аккуратно описывать проблему, если хотите получить помощь.
Отвечаю только потому, что это ваш первый вопрос на форуме, а к новичкам надо относиться (на первых порах) лояльно, нежно и трепетно.
В общем, поскольку вам лень аккуратно писать свой вопрос — мне лень аккуратно писать на него ответ. Поэтому вот вам пример, как из датафрейма «удалить строки, в которых содержится слово ‘реф’ в столбце ‘тип авто’ «
В датафрейме находиться
Результат в обоих случаях, как и ожидалось, тождественен:
Ну, а до какой строчки вам надо вставлять код и прочие тюнингование под вашу задачу — оставляю на самостоятельную работу.
Источник
Удаление строк, содержащих пустые ячейки, из DataFrame панд
У меня есть pd.DataFrame, который был создан путем анализа некоторых таблиц Excel. Столбец которого содержит пустые ячейки. Например, ниже представлен вывод частоты этого столбца, 32320 записей имеют отсутствующие значения для Арендатора.
Я пытаюсь удалить строки, где отсутствует Tenant, однако опция isnull не распознает отсутствующие значения.
В столбце есть тип данных “Объект”. Что происходит в этом случае? Как я могу удалить записи, где отсутствует арендатор?
Pandas распознает значение как нулевое, если это объект np.nan , который будет печататься как NaN в DataFrame. Ваши пропущенные значения, вероятно, пустые строки, которые Pandas не распознает как нулевые. Чтобы это исправить, вы можете преобразовать пустые строки (или все, что находится в ваших пустых ячейках) в объекты np.nan используя replace() , а затем вызвать dropna() в вашем DataFrame, чтобы удалить строки с нулевыми арендаторами.
Чтобы продемонстрировать, мы создаем DataFrame с некоторыми случайными значениями и пустыми строками в столбце Tenants :
Теперь мы заменим все пустые строки в Tenants колонке с np.nan объектов, например, так:
Теперь мы можем отбросить нулевые значения:
value_counts опускает NaN по умолчанию, поэтому вы, скорее всего, имеете дело с “”.
Итак, вы можете просто отфильтровать их, например
Там, где в ячейке есть пробел, вы не можете его увидеть, используйте
заменить пробел на NaN, затем
Pythonic + Pandorable: df[df[‘col’].astype(bool)]
Пустые строки ложные, что означает, что вы можете фильтровать значения типа bool следующим образом:
Если ваша цель – удалить не только пустые строки, но и строки, содержащие только пробелы, заранее используйте str.strip :
Быстрее, чем ты думаешь
.astype – это векторизованная операция, это быстрее, чем все представленные варианты. По крайней мере, из моих тестов. YMMV.
Вот сравнение времени, я добавил некоторые другие методы, которые я мог придумать.
Код для сравнения, для справки:
Вы можете использовать этот вариант:
Это приведет к выходу (** – выделение только требуемых строк):
Итак, чтобы отбросить все, что не имеет значения “образование”, используйте следующий код:
Источник
Удалить из таблицы
where . In deleting rows, it is important to understand the PyTables deletes rows by erasing the rows, then moving the following data. Thus deleting can potentially be a very expensive operation depending on the orientation of your data. To get optimal performance, it’s worthwhile to have the dimension you are deleting be the first of the indexables .» onmousemove=»i18n(this)»>Вы можете выборочно удалить из таблицы, указав where . При удалении строк важно понимать, что PyTables удаляет строки, стирая строки, а затем перемещая следующие данные. Таким образом, удаление потенциально может быть очень дорогостоящей операцией в зависимости от ориентации ваших данных. Для достижения оптимальной производительности целесообразно, чтобы удаляемое измерение было первым из indexables .
indexables . Here’s a simple use case. You store panel-type data, with dates in the major_axis and ids in the minor_axis . The data is then interleaved like this:» onmousemove=»i18n(this)»>Данные упорядочены (на диске) с точки зрения indexables элементов . Вот простой вариант использования. Вы храните данные панельного типа с датами на major_axis и идентификаторами на minor_axis . Затем данные чередуются следующим образом:
major_axis will be fairly quick, as one chunk is removed, then the following data moved. On the other hand a delete operation on the minor_axis will be very expensive. In this case it would almost certainly be faster to rewrite the table using a where that selects all but the missing data.» onmousemove=»i18n(this)»>Должно быть ясно, что операция удаления на major_axis будет довольно быстрой, так как один фрагмент удаляется, а затем перемещаются следующие данные. С другой стороны, операция удаления на minor_axis будет очень дорогостоящей. В этом случае почти наверняка будет быстрее переписать таблицу, используя, where выбираются все данные, кроме отсутствующих.
Обратите внимание, что HDF5 НЕ ВОССТАНАВЛИВАЕТ ПРОСТРАНСТВО в файлах h5 автоматически. Таким образом, многократное удаление (или удаление узлов) и повторное добавление БУДЕТ СТАНОВИТСЯ УВЕЛИЧИТЬ РАЗМЕР ФАЙЛА .
Чтобы перепаковать и очистить файл, используйте ptrepack .
Примечания и предостережения
Compression
PyTables allows the stored data to be compressed. This applies to all kinds of stores, not just tables. Two parameters are used to control compression: complevel and complib .» onmousemove=»i18n(this)»> PyTables позволяет сжимать хранимые данные. Это относится ко всем видам магазинов, а не только к столам. Для управления сжатием используются два параметра: complevel и complib .
complevel specifies if and how hard data is to be compressed. complevel=0 and complevel=None disables compression and 0 enables compression.» onmousemove=»i18n(this)»> complevel указывает, должны ли и как жесткие данные должны быть сжаты. complevel=0 и complevel=None отключает сжатие, а 0 включает сжатие.
complib specifies which compression library to use. If nothing is specified the default library zlib is used. A compression library usually optimizes for either good compression rates or speed and the results will depend on the type of data. Which type of compression to choose depends on your specific needs and data. The list of supported compression libraries:» onmousemove=»i18n(this)»> complib указывает, какую библиотеку сжатия использовать. Если ничего не указано, используется библиотека по умолчанию zlib . Библиотека сжатия обычно оптимизирует либо хорошую степень сжатия, либо скорость, и результаты будут зависеть от типа данных. Какой тип сжатия выбрать, зависит от ваших конкретных потребностей и данных. Список поддерживаемых библиотек сжатия:
zlib : библиотека сжатия по умолчанию. Классический с точки зрения сжатия, обеспечивает хорошие показатели сжатия, но несколько медленный.
lzo : быстрое сжатие и декомпрессия.
bzip2 : Хорошая степень сжатия.
blosc : быстрое сжатие и декомпрессия.
Поддержка альтернативных компрессоров blosc:
blosc ‘ onmousemove=»i18n(this)»>blosc: blosclz Это компрессор по умолчанию для blosc
blosc:lz4 : Компактный, очень популярный и быстрый компрессор.
blosc:lz4hc : модифицированная версия LZ4, обеспечивает лучшую степень сжатия за счет скорости.
blosc: snappy : Популярный компрессор, используемый во многих местах.
blosc: zlib : классика; несколько медленнее, чем предыдущие, но с лучшей степенью сжатия.
blosc: zstd : Чрезвычайно хорошо сбалансированный кодек; он обеспечивает лучшую степень сжатия среди вышеперечисленных и при достаточно высокой скорости.
complib is defined as something other than the listed libraries a ValueError exception is issued.» onmousemove=»i18n(this)»>Если complib определен как нечто иное, чем перечисленные библиотеки, выдается исключение ValueError .
complib option is missing on your platform, compression defaults to zlib without further ado.» onmousemove=»i18n(this)»>Если библиотека, указанная с complib параметра Complib, отсутствует на вашей платформе, без лишних слов по умолчанию используется zlib .
Включить сжатие для всех объектов в файле:
Или сжатие «на лету» (это относится только к таблицам)в магазинах,где сжатие не включено:
ptrepack
PyTables offers better write performance when tables are compressed after they are written, as opposed to turning on compression at the very beginning. You can use the supplied PyTables utility ptrepack . In addition, ptrepack can change compression levels after the fact.» onmousemove=»i18n(this)»> PyTables обеспечивает лучшую производительность записи, когда таблицы сжимаются после того, как они были записаны, в отличие от включения сжатия в самом начале. Вы можете использовать прилагаемую PyTables утилиту ptrepack . Кроме того, ptrepack может изменять уровни сжатия постфактум.
ptrepack in.h5 out.h5 will repack the file to allow you to reuse previously deleted space. Alternatively, one can simply remove the file and write again, or use the copy method.» onmousemove=»i18n(this)»>Кроме того ptrepack in.h5 out.h5 будет упакуйте файл , чтобы повторно использовать ранее удалялась пространство. В качестве альтернативы можно просто удалить файл и записать снова или использовать метод copy .
Caveats
HDFStore is not-threadsafe for writing. The underlying PyTables only supports concurrent reads (via threading or processes). If you need reading and writing at the same time, you need to serialize these operations in a single thread in a single process. You will corrupt your data otherwise. See the (GH2397) for more information.’ onmousemove=»i18n(this)»> HDFStore не является потокобезопасным для записи . Основополагающий PyTables поддерживает только одновременно считывает ( с помощью резьбы или процессов). Если вам нужно читать и писать одновременно , вам необходимо сериализовать эти операции в одном потоке в одном процессе. В противном случае вы испортите свои данные. См. ( GH2397 ) для получения дополнительной информации.
fsync() before releasing write locks. For convenience you can use store.flush(fsync=True) to do this for you.’ onmousemove=»i18n(this)»>Если вы используете блокировки для управления доступом на запись между несколькими процессами, вы можете использовать fsync() перед снятием блокировки записи. Для удобства вы можете использовать store.flush(fsync=True) чтобы сделать это за вас.
table is created columns (DataFrame) are fixed; only exactly the same columns can be appended» onmousemove=»i18n(this)»>После создания table столбцы (DataFrame) фиксируются; могут быть добавлены только точно такие же столбцы
pytz.timezone(‘US/Eastern’) ) are not necessarily equal across timezone versions. So if data is localized to a specific timezone in the HDFStore using one version of a timezone library and that data is updated with another version, the data will be converted to UTC since these timezones are not considered equal. Either use the same version of timezone library or use tz_convert with the updated timezone definition.» onmousemove=»i18n(this)»>Имейте в pytz.timezone(‘US/Eastern’) что часовые пояса (например, pytz.timezone (‘US / Eastern’) ) не обязательно равны между версиями часовых поясов. Таким образом, если данные локализованы для определенного часового пояса в HDFStore с использованием одной версии библиотеки часовых поясов и эти данные обновляются другой версией, данные будут преобразованы в UTC, поскольку эти часовые пояса не считаются равными. Либо используйте ту же версию библиотеки часовых tz_convert либо используйте tz_convert с обновленным определением часового пояса.
PyTables will show a NaturalNameWarning if a column name cannot be used as an attribute selector. Natural identifiers contain only letters, numbers, and underscores, and may not begin with a number. Other identifiers cannot be used in a where clause and are generally a bad idea.» onmousemove=»i18n(this)»> PyTables покажет NaturalNameWarning , если имя столбца не может использоваться в качестве селектора атрибута. Естественные идентификаторы содержат только буквы, цифры и символы подчеркивания и не могут начинаться с цифры. Другие идентификаторы не могут использоваться в предложении where и, как правило, являются плохой идеей.
DataTypes
HDFStore will map an object dtype to the PyTables underlying dtype. This means the following types are known to work:» onmousemove=»i18n(this)»> HDFStore будет отображать объект DTYPE к PyTables , лежащих в основе DTYPE. Это означает, что, как известно, работают следующие типы:
Представляет отсутствующие значения
float64, float32, float16 » onmousemove=»i18n(this)»>плавающие: float64, float32, float16
int64, int32, int8, uint64,uint32, uint8 » onmousemove=»i18n(this)»>целое число: int64, int32, int8, uint64,uint32, uint8
Источник
How to remove the entire blank row from the existing Excel Sheet using Python?
I need a solution which DOES NOT :
Include reading the whole file and rewriting it without the deleted row.
IS THERE ANY DIRECT SOLUTION?
asked Jan 4, 2016 at 6:12
3
I achieved using Pandas package….
import pandas as pd
#Read from Excel
xl= pd.ExcelFile("test.xls")
#Parsing Excel Sheet to DataFrame
dfs = xl.parse(xl.sheet_names[0])
#Update DataFrame as per requirement
#(Here Removing the row from DataFrame having blank value in "Name" column)
dfs = dfs[dfs['Name'] != '']
#Updating the excel sheet with the updated DataFrame
dfs.to_excel("test.xls",sheet_name='Sheet1',index=False)
answered Jan 5, 2016 at 8:49
Jd16Jd16
3771 gold badge3 silver badges11 bronze badges
2
If using memory is not an issue you can achieve this using an extra dataframe.
import pandas as pd
#Read from Excel
xl= pd.ExcelFile("test.xls")
dfs = xl.parse(xl.sheet_names[0])
df1 = dfs[dfs['Sal'] == 1000]
df1 = df1[df1['Message']=="abc"]
ph_no = df1['Number']
print df1
answered Jan 6, 2016 at 5:48
Varsha Varsha
864 bronze badges
To delete an Excel row, say row 5, column does not matter so 1:
sh.Cells(5,1).EntireRow.Delete()
To delete a range of Excel rows, say row 5 to 20
sh.Range(sh.Cells(5,1),sh.Cells(20,1)).EntireRow.Delete()
user247702
23.5k15 gold badges111 silver badges157 bronze badges
answered Jan 27, 2017 at 15:17
17 авг. 2022 г.
читать 2 мин
Вы можете использовать следующий синтаксис, чтобы удалить одну строку из pandas DataFrame по номеру индекса:
#drop first row from DataFrame
df = df.drop (index= 0 )
И вы можете использовать следующий синтаксис, чтобы удалить несколько строк из pandas DataFrame по номерам индексов:
#drop first, second, and fourth row from DataFrame
df = df.drop (index=[ 0 , 1 , 3 ])
Если ваш DataFrame имеет строки в качестве значений индекса, вы можете просто передать имена в виде строк для удаления:
df = df.drop (index=['first', 'second', 'third'])
В следующих примерах показано, как на практике удалять строки по индексу.
Пример 1. Удаление одной строки по индексу
В следующем коде показано, как удалить вторую строку в кадре данных pandas:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'],
'first': ['Dirk', 'Kobe', 'Tim', 'Lebron'],
'last': ['Nowitzki', 'Bryant', 'Duncan', 'James'],
'points': [26, 31, 22, 29]})
#view DataFrame
df
team first last points
0 Mavs Dirk Nowitzki 26
1 Lakers Kobe Bryant 31
2 Spurs Tim Duncan 22
3 Cavs Lebron James 29
#drop second row from DataFrame
df = df.drop (index= 1 )
#view resulting dataFrame
df
team first last points
0 Mavs Dirk Nowitzki 26
2 Spurs Tim Duncan 22
3 Cavs Lebron James 29
Пример 2. Удаление нескольких строк по индексу
Следующий код показывает, как удалить несколько строк в pandas DataFrame по индексу:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'],
'first': ['Dirk', 'Kobe', 'Tim', 'Lebron'],
'last': ['Nowitzki', 'Bryant', 'Duncan', 'James'],
'points': [26, 31, 22, 29]})
#view DataFrame
df
team first last points
0 Mavs Dirk Nowitzki 26
1 Lakers Kobe Bryant 31
2 Spurs Tim Duncan 22
3 Cavs Lebron James 29
#drop first, second, and fourth row from DataFrame
df = df.drop (index=[ 0 , 1, 3 ])
#view resulting dataFrame
df
team first last points
2 Spurs Tim Duncan 22
Пример 3: удаление строк, когда индекс является строкой
В следующем коде показано, как удалять строки из кадра данных pandas по индексу, когда индекс представляет собой строку, а не число:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'],
'last': ['Nowitzki', 'Bryant', 'Duncan', 'James'],
'last': ['Nowitzki', 'Bryant', 'Duncan', 'James'],
'points': [26, 31, 22, 29]},
index=['A', 'B', 'C', 'D'])
#view DataFrame
df
team first last points
A Mavs Dirk Nowitzki 26
B Lakers Kobe Bryant 31
C Spurs Tim Duncan 22
D Cavs Lebron James 29
#remove rows with index values 'A' and 'C'
df = df.drop (index=['A', 'C'])
#view resulting DataFrame
df
team first last points
B Lakers Kobe Bryant 31
D Cavs Lebron James 29
Дополнительные ресурсы
Как удалить столбцы по индексу в Pandas
Pandas: как удалить строки, содержащие определенную строку
Pandas: как удалить повторяющиеся строки