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

dataframe表示重量和区域Ids (dataframe的列)的联邦快递地面运费。功能需要如下所示
[weight,zone]
e.g. [[1,2],[1,3] ...[1,25],[2,2],[2,3] ...[2,25]....[8,25]]并且与它们相对应的标签基本上是运费,
[[shipping charge]]
e.g. [[8.95],[9.44] .....[35.18]]虽然我正在使用以下代码,但我确信必须有一种更快、更优化、也许更直接的方法来实现这一点,要么使用dataframe,要么使用numpy。
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秒。我正在寻求一个更优化的方式的建议。
发布于 2018-01-14 07:49:34
首先,创建“Weight”索引,并混合索引和列:
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现在,您的新索引是您的要素,数据列是您的标签:
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]])https://stackoverflow.com/questions/48245292
复制相似问题