Сортировка через фрейм данных Pandas и сохранение уникальных записей - PullRequest
0 голосов
/ 14 октября 2018

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

Вот мой код:

import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
 
df = pd.read_excel('data_file.xlsx', sheetname='Sheet 1')


for line in df:
    if line.startswith(line):

Данные форматируются следующим образом:

Столбец 1 имеет номера бегунов, столбец 2 имеет время спринта 100 метров, столбец 3 имеет время спринта 400 метров.

Вот пример данных:

Runner  100m   400m
  1     43.7   93.5
  1     37.5   87.6
  1     39.2   82.5
  2     28.9   67.9
  2     26.2   69.9
  2     33.3   60.25
  2     34.2   60.65
  3     19.9   45.5
  3     19.8   44.0
  4     18.7   50.0
  4     19.0   52.4

Как можно хранить содержимое всех строк, начинающихся с 1, в уникальной переменной, все строки, начинающиеся с 2, в другой переменной, 3 и т. Д.?Я знаю, что это должно включать какой-то цикл, но я не уверен, как решить эту проблему.

1 Ответ

0 голосов
/ 14 октября 2018

Как правило, вы хотите избежать попыток программно установить уникальные переменные.Эту проблему, вероятно, лучше всего решить, используя структуру данных словаря для хранения содержимого строк с ключами для каждого идентификатора «Runner» (но участники должны быть уникальными).

Вы можете быстро перебирать данные для каждого бегуна, используя групповые панды.В цикле i представляет идентификатор "Runner", а tdf - это фрейм данных только данных для этого бегуна.Это будет хранить массив данных для каждого бегуна в dict d.

d = {}
for i, tdf in df.groupby('Runner'):
    d[i] = tdf[['100m', '400m']].values

РЕДАКТИРОВАТЬ: Если вы действительно хотите перебирать построчно, вы можете использовать метод df.iterrows ().

d = {}
for i, x in df.iterrows():
    runner = x['Runner']
    data = x[['100m', '400m']].tolist()
    d[runner] = d.get(runner, []).append(data)
...