Итерируйте, чтобы получить список длин - PullRequest
0 голосов
/ 28 октября 2019

С учетом фрейма данных line:

data = [[10, 10, 10,10,10,10,10,10], [10, 10, 10,10,10,10,10,10], [10, 10, 10,10,10,10,10,10]]
line = pd.DataFrame(data, columns = ['0', '0.1','1', '1.1','2', '2.1','3', '3.1']) 
line

Что я сделал до сих пор:

border_1 = line[['2','2.1']]
border_1 = border_1.rename(columns={'2': 'longitude', '2.1': 'latitude'})
border_1 = border_1.dropna()

Я сделал это с [['2','2.1']]. Теперь я хочу сделать это с каждой парой, начиная с 0 0,1 1 1,1 и так далее, чтобы получить border_1


Как применить ко всему фрейму данных?


cols = line.columns.tolist()
for i in range(0, len(cols), 2):
    border_1 = line[cols[i], cols[i+1]]
    border_1 = border_1.rename(columns={cols[i]: 'longitude', cols[i+i]: 'latitude'})
    border_1 = border_1.dropna()

KeyError: ('0', '0.1')

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Создание нового фрейма данных с мультииндексом

cols = (
    pd.MultiIndex.from_tuples([
        tuple(map(int, (x +  '.0').split('.')[:2]))
        for x in line.columns
    ]).set_levels(['longitude', 'latitude'], level=1)
)

border = pd.DataFrame({c: v for c, (k, v) in zip(cols, line.iteritems())})
border

          0                  1                  2                  3         
  longitude latitude longitude latitude longitude latitude longitude latitude
0        10       10        10       10        10       10        10       10
1        10       10        10       10        10       10        10       10
2        10       10        10       10        10       10        10       10
0 голосов
/ 28 октября 2019

У вас есть две синтаксические ошибки:

Во-первых, чтобы получить несколько столбцов, вы должны использовать их в виде списка:

for i in range(0, len(cols), 2):
    border_1 = line[[cols[i], cols[i+1]]]

Во-вторых, простая опечатка, но cols[i+i] получаетбыстро выходит за пределы диапазона.

    border_1 = border_1.rename(columns={cols[i]: 'longitude', cols[i+1]: 'latitude'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...