#python #pandas #dataframe
#python #pandas #dataframe
Вопрос:
У меня есть набор данных, импортированный из файла CSV в dataframe на Python. Я хочу удалить некоторые определенные строки из этого фрейма данных и добавить их в пустой фрейм данных. До сих пор я пытался удалить строки 1 и 0 из вызываемого «большого» df
фрейма данных и использовать их для dff
использования этого кода:
dff = pd.DataFrame() #Create empty dataframe
for x in range(0, 2):
dff = dff.append(df.iloc[x]) #Append the first 2 rows from df to dff
#How to remove appended rows from df?
Похоже, это работает, однако столбцы переворачиваются, например, df
если есть порядок A, B, C, затем dff
будет получен порядок C, B, A; кроме этого, данные верны. Также как мне удалить определенную строку из dataframe?
Ответ №1:
Если ваша цель — просто удалить первые две строки в другой dataframe, вам не нужно использовать цикл, просто разрежьте:
import pandas as pd
df = pd.DataFrame({"col1": [1,2,3,4,5,6], "col2": [11,22,33,44,55,66]})
dff = df.iloc[:2]
df = df.iloc[2:]
Даст вам:
dff
Out[6]:
col1 col2
0 1 11
1 2 22
df
Out[8]:
col1 col2
2 3 33
3 4 44
4 5 55
5 6 66
Если ваш список желаемых строк более сложный, чем только первые два, в вашем примере более общий метод может быть:
dff = df.iloc[[1,3,5]] # Your list of row numbers
df = df.iloc[~df.index.isin(dff.index)]
Это означает, что даже если столбец индекса не содержит последовательных целых чисел, все строки, которые вы использовали для заполнения dff
, будут удалены df
.
Ответ №2:
Мне удалось решить это, выполнив:
dff = pd.DataFrame()
dff = df.iloc[:0]
Это скопирует первую строку df (заголовки столбцов, например, A, B, C) в dff, затем добавит работу, как и должно быть, с любой строкой, и строка, например, 1150, может быть добавлена и удалена с помощью:
dff = dff.append(df.iloc[1150])
df = df.drop(df.index[1150])
Комментарии:
1. Пожалуйста, имейте в виду, что это не будет работать в цикле, поскольку
iloc
иindex
не являются взаимозаменяемыми. Например, если ваш df последовательно пронумерован, после удаления индекса 1150iloc[1151]
будет указывать наindex[1152]