Индекс фрейма данных заказа на основе второго фрейма данных - PullRequest
0 голосов
/ 27 мая 2018

Я получил два DataFrames в Python, но столбец там должен использоваться как индексы (CodeNumber) не в том же порядке.Там будет необходимо заказать их в равной степени;Следует код:

#generating DataFrames:
d3 = {'CodeNumber': [1234, 1235, 111, 101], 'Date': [20150808, 20141201, 20180119, 20120720], 'Weight': [26, 32, 41, 24]}
d4 = {'CodeNumber': [1235, 1234, 101, 111], 'Date': [20160808, 20151201, 20180219, 20130720], 'Weight': [28, 25, 47, 3]}

data_SKU3 = pd.DataFrame(data=d3)
data_SKU4 = pd.DataFrame(data=d4)

Затем я устанавливаю в качестве индекса CodeNumber:

dados_SKU3.set_index('CodeNumber', inplace = True)
dados_SKU4.set_index('CodeNumber', inplace = True)

, если мы печатаем результирующие кадры данных, обратите внимание, что data_SKU3 имеет следующий порядок кодов: 12341235 111 101, а data_SKU4: 1235 1234 101 111

Есть ли способ упорядочить номера кодов, чтобы оба кадра данных были в одном порядке?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Вы также можете отсортировать значения по CodeNumber на каждом фрейме данных, вызвав .sort_values(by = 'CodeNumber') перед установкой их как index:

d3 = {'CodeNumber': [1234, 1235, 111, 101], 'Date': [20150808, 20141201, 20180119, 20120720], 'Weight': [26, 32, 41, 24]}
d4 = {'CodeNumber': [1235, 1234, 101, 111], 'Date': [20160808, 20151201, 20180219, 20130720], 'Weight': [28, 25, 47, 3]}

data_SKU3 = pd.DataFrame(data=d3).sort_values(by = 'CodeNumber')
data_SKU4 = pd.DataFrame(data=d4).sort_values(by = 'CodeNumber')

data_SKU3.set_index('CodeNumber', inplace = True)
data_SKU4.set_index('CodeNumber', inplace = True)
0 голосов
/ 27 мая 2018

Используйте sort_index, если одинаковое количество значений в обоих indices:

data_SKU3 = data_SKU3.set_index('CodeNumber').sort_index()
data_SKU4 = data_SKU4.set_index('CodeNumber').sort_index()

print (data_SKU3)
                Date  Weight
CodeNumber                  
101         20120720      24
111         20180119      41
1234        20150808      26
1235        20141201      32

print (data_SKU4)
                Date  Weight
CodeNumber                  
101         20180219      47
111         20130720       3
1234        20151201      25
1235        20160808      28

Другой подход заключается в использовании reindex другим index значения, но необходимы уникальные значения и только различие в порядке упорядочения:

data_SKU3 = data_SKU3.set_index('CodeNumber')
data_SKU4 = data_SKU4.set_index('CodeNumber').reindex(index=data_SKU3.index)
print (data_SKU3)
                Date  Weight
CodeNumber                  
1234        20150808      26
1235        20141201      32
111         20180119      41
101         20120720      24

print (data_SKU4)
                Date  Weight
CodeNumber                  
1234        20151201      25
1235        20160808      28
111         20130720       3
101         20180219      47
...