首页 > 解决方案 > 迭代以获取长度列表

问题描述

给定一个数据框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')

标签: pythonpandasnumpy

解决方案


您有两个语法错误:

首先,要获取多个列,您需要将它们用作列表:

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'})

推荐阅读