首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas数据帧到要素和标注

pandas数据帧到要素和标注
EN

Stack Overflow用户
提问于 2018-01-14 07:34:08
回答 1查看 1.9K关注 0票数 0

下面是我想要转换为特征和标签列表/数组的数据帧。

dataframe表示重量和区域Ids (dataframe的列)的联邦快递地面运费。功能需要如下所示

代码语言:javascript
复制
[weight,zone] 
e.g. [[1,2],[1,3] ...[1,25],[2,2],[2,3] ...[2,25]....[8,25]]

并且与它们相对应的标签基本上是运费,

代码语言:javascript
复制
[[shipping charge]]
e.g. [[8.95],[9.44] .....[35.18]]

虽然我正在使用以下代码,但我确信必须有一种更快、更优化、也许更直接的方法来实现这一点,要么使用dataframe,要么使用numpy。

代码语言:javascript
复制
i=0
j=0
for weight in df_ground.Weight:
    for column in column_list[1:]: # skipping the weight column !
        features[j] = [df_ground.Weight[i],column]
        labels[j] = df_ground[column][df_ground['Weight'] == df_ground.Weight[i]]
        j +=1
    i +=1

对于大小为2700的数据帧,此代码需要1到2秒。我正在寻求一个更优化的方式的建议。

EN

回答 1

Stack Overflow用户

发布于 2018-01-14 07:49:34

首先,创建“Weight”索引,并混合索引和列:

代码语言:javascript
复制
mixed = df_ground.set_index('Weight').stack()

#Weight   
#1       2     8.95
#        3     9.44
#        4     9.89
#....
#2       2     9.24
#        3     9.92
#        4    10.41

现在,您的新索引是您的要素,数据列是您的标签:

代码语言:javascript
复制
features = [list(x) for x in mixed.index]
#[[1, 2], [1, 3], [1, 4], ..., [2, 2], [2, 3], [2, 4], ...]

labels = [[x] for x in mixed.values]
#[[8.95],[9.44],[9.89],[9.24],[9.92],[10.41]])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48245292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档