2014-09-18 8 views
0

У меня есть серия pandas с MultiIndex, и я хочу получить целые числа строк, принадлежащие одному уровню MultiIndex.Получите целочисленный индекс строки серии MultiIndex

Например, если у меня есть образец данных s

s = pandas.Series([10, 23, 2, 19], 
        index=pandas.MultiIndex.from_product([['a', 'b'], ['c', 'd']])) 

, который выглядит следующим образом:

a c 10 
    d 23 
b c 2 
    d 19 

Я хочу, чтобы получить номера строк, которые соответствуют уровню b. Так вот, я бы получил [2, 3] в качестве вывода, потому что последние две строки находятся под b. Кроме того, мне действительно нужна только первая строка, которая принадлежит b.

Я хотел получить номера, чтобы сравнить их по Серии. Скажем, у меня есть пять объектов серии с уровнем b. Это данные временных рядов, а b соответствует условию, которое присутствовало во время некоторых наблюдений (и является дополнительным условием и т. Д.). Я хочу посмотреть, какая из этих серий имеет условия одновременно.

Редактировать: Чтобы уточнить, мне не нужно сравнивать сами значения, просто индексы. Например, в R, если у меня был dataframe:

d = data.frame(col_1 = c('a','a','b','b'), col_2 = c('c','d','c','d'), col_3 = runif(4)) 

Затем команда which(d$col_1 == 'b') будет производить результаты, я хочу.

ответ

0

Если индекс, который вы хотите, чтобы индекс, является внешним, который вы можете использовать loc

df.loc['b'] 

Чтобы получить первую строку я найти метод head самого простого

df.loc['b'].head(1) 

идиоматического путь вторая часть вашего вопроса заключается в следующем. Скажите, что ваша серия называется series1, series2 и series3.

big_series = pd.concat([series1, series2, series3]) 
big_series.loc['b'] 
+0

Thanks - Мне действительно нужен целочисленный индексный номер в исходной серии. Поэтому 's.loc ['b']. Head (1)' будет возвращать содержимое, но мне нужно, чтобы он возвращал, где находится '' ', содержимое которого находится. – user2034412

+0

Если вам нужно сравнить locatains в каждой серии, вы должны поместить все свои ряды в список, а затем конкатенировать их. Вы можете получить все значения за один раз, используя 'loc' – b10n

Смежные вопросы