Перебирать столбцы в python и вставлять имена столбцов в зависимости от условия - PullRequest
0 голосов
/ 30 августа 2018

У меня есть фрейм данных, который разделен на диапазоны номеров и списков, соответствующих этим диапазонам. Я хотел бы пройтись по каждому столбцу, получить максимальное число и поместить заголовок столбца в правильный список в соответствии с диапазоном. У меня есть списки и данные:

       range                 A                 B                 C
0      0-300                20                 0               427   
1    300-500                66                16               341   
2    500-800               164                82               368   
3       >800              1245              1397               328 

low_group = [] # 0-300
mid1_group = [] # 300-500
mid2_group = [] # 500-800
high_group - [] # >800

Вывод списков должен выглядеть следующим образом:

low_group = ['C']
mid1_group = [] 
mid2_group = []
high_group - ['A','B']

Кто-нибудь знает, как мне этого добиться?

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Я бы обычно не использовал произвольные именованные переменные для хранения значений. Вы можете хранить это хешируемый объект-получатель.

In [281]: mapper = {'0-300': 'low', '301-500': 'mid1', '501-800': 'mid2', '>800': 'high'}

In [282]: df.set_index('range').idxmax().map(mapper)
Out[282]:
A    high
B    high
C     low
dtype: object
0 голосов
/ 30 августа 2018

Использование melt

df.melt('range').sort_values('value').drop_duplicates('variable',keep='last')
Out[487]: 
   range variable  value
8  0-300        C    427
3   >800        A   1245
7   >800        B   1397
0 голосов
/ 30 августа 2018

Вы можете установить серию range в качестве индекса и использовать idxmax:

res = df.set_index('range').idxmax()

print(res)

A     >800
B     >800
C    0-300
dtype: object

Ближе к требуемому формату вы можете использовать диапазоны сопоставления словаря для списков:

d = res.reset_index().groupby(0)['index'].apply(list).to_dict()

print(d)

{'0-300': ['C'], '>800': ['A', 'B']}

Затем вы можете переименовать ключи по мере необходимости. На мой взгляд, это хорошая практика, чтобы избежать переменного числа переменных. Словарь обычно достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...