Выберите pandas строки, исключая номер индекса
Не совсем уверен, почему я не могу понять это. Я хочу нарезать фреймворк Pandas, используя номера индексов. У меня есть индекс списка/ядра с номерами индексов, которые мне НЕ нужны, как показано ниже
pandas.core.index.Int64Index
Int64Index([2340, 4840, 3163, 1597, 491 , 5010, 911 , 3085, 5486, 5475, 1417, 2663, 4204, 156 , 5058, 1990, 3200, 1218, 3280, 793 , 824 , 3625, 1726, 1971, 2845, 4668, 2973, 3039, 376 , 4394, 3749, 1610, 3892, 2527, 324 , 5245, 696 , 1239, 4601, 3219, 5138, 4832, 4762, 1256, 4437, 2475, 3732, 4063, 1193], dtype=int64)
Как создать новый фрейм данных, исключая эти номера индексов. Я попробовал
df.iloc[combined_index]
и, очевидно, это просто показывает строки с этим номером индекса (напротив того, что я хочу). любая помощь будет принята с благодарностью
Ответы
Ответ 1
Не уверен, что это то, что вы ищете, отправляя это как ответ, слишком долго для комментария:
In [31]: d = {'a':[1,2,3,4,5,6], 'b':[1,2,3,4,5,6]}
In [32]: df = pd.DataFrame(d)
In [33]: bad_df = df.index.isin([3,5])
In [34]: df[~bad_df]
Out[34]:
a b
0 1 1
1 2 2
2 3 3
4 5 5
In [35]:
Ответ 2
Вы можете использовать pd.Int64Index(np.arange(len(df))).difference(index)
для формирования нового порядкового индекса. Например, если мы хотим удалить строки, связанные с порядковым индексом [1,3,5], то
import numpy as np
import pandas as pd
index = pd.Int64Index([1,3,5], dtype=np.int64)
df = pd.DataFrame(np.arange(6*2).reshape((6,2)), index=list('ABCDEF'))
# 0 1
# A 0 1
# B 2 3
# C 4 5
# D 6 7
# E 8 9
# F 10 11
new_index = pd.Int64Index(np.arange(len(df))).difference(index)
print(df.iloc[new_index])
дает
0 1
A 0 1
C 4 5
E 8 9
Ответ 3
Вероятно, более простой способ - это просто использовать логический индекс, а slice обычно делает что-то вроде этого:
df[~df.index.isin(list_to_exclude)]
Ответ 4
Просто используйте .drop
и передайте ему список индексов для исключения.
import pandas as pd
df = pd.DataFrame({"a": [10, 11, 12, 13, 14, 15]})
df.drop([1, 2, 3], axis=0)
Который выводит это.
a
0 10
4 14
5 15