Получить индекс строки и столбца значения в Pandas df

Один слой для использования ОЗУ с только зависимостью stdlib:

import os
tot_m, used_m, free_m = map(int, os.popen('free -t -m').readlines()[-1].split()[1:])
0
задан Josh Friedlander 26 February 2019 в 15:22
поделиться

2 ответа

Если я понимаю, что вы ищете: найдите (значение индекса, расположение столбца) значения в кадре данных. Вы можете использовать понимание списка в цикле. Вероятно, не будет самым быстрым, если ваш фрейм данных большой.

# assume this dataframe
df = pd.DataFrame({'col':['abc', 'def','wert','abc'], 'col2':['asdf', 'abc', 'sdfg', 'def']})

# list comprehension

[(df[col][df[col].eq('abc')].index[i], df.columns.get_loc(col)) for col in df.columns for i in range(len(df[col][df[col].eq('abc')].index))]

# [(0, 0), (3, 0), (1, 1)]

измените df.columns.get_loc на col, если хотите указать значение столбца, а не местоположение:

[(df[col][df[col].eq('abc')].index[i], col) for col in df.columns for i in range(len(df[col][df[col].eq('abc')].index))]

# [(0, 'col'), (3, 'col'), (1, 'col2')]
0
ответ дан Chris 26 February 2019 в 15:22
поделиться

Интересный вопрос. Я также использовал понимание списка, но с np.where. Тем не менее, я был бы удивлен, если бы не было менее неуклюжий путь.

df = pd.DataFrame({'column_1':['a','c'], 'column_2':['b','d']}, index=[1,2])

[(i, np.where(df[i] == 'd')[0].tolist()) for i in list(df) if len(np.where(df[i] == 'd')[0]) > 0]

> [[('column_2', [1])]

Обратите внимание, что он возвращает числовой индекс (на основе 0), а не пользовательский индекс (на основе 1). Если у вас есть фиксированное смещение, вы можете просто добавить +1 или что-то еще к выводу.

0
ответ дан Josh Friedlander 26 February 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: