创建新的参考数据框

时间:2016-05-12 14:20:01

标签: python python-2.7 dataframe

什么是最简单的方法(数据框):

Project Folder Owner value1 values2
  A       B      C     100    200
  A       B      C     500    400
  D       E      F     100    200
  D       E      F     300    400

到此:

referenceID   value1 values2
  1             100    200
  1             500    400
  2             100    200
  2             300    400

和第二个数据框:

referenceID Project Folder Owner 
1             A       B      C
2             D       E      F

我虽然使用标签编码器,但这需要我连接"项目,文件夹和所有者"进入一个新的领域 - 只要我保留了这些东西,这是好的,但似乎是额外的不必要的工作。

3 个答案:

答案 0 :(得分:0)

您可以使用项目,文件夹和所有者在原始文件上创建第二个具有groupby的数据框。然后创建索引的唯一值列表,并将其提供给新的数据帧。假设您的原始数据位于名为df:

的数据框中
 <plugin>
   <groupId>org.wildfly.plugins</groupId>
   <artifactId>wildfly-maven-plugin</artifactId>
   <version>1.1.0.Alpha8</version>
 </plugin>

结果将如下所示(您想要的第二个数据帧):

mvn wildfly:deploy

答案 1 :(得分:0)

这将生成您正在寻找的输出。

m = [['A', 'B', 'C', 100, 200],
     ['A', 'B', 'C', 500, 400],
     ['D', 'E', 'F', 100, 200],
     ['D', 'E', 'F', 300, 400]]

owner = {}
for row in m:
    key = tuple(row[:3])
    if key in owner:
        owner[key].append(row[3:])
    else:
        owner[key] = [row[3:]]

frame1 = []
frame2 = []
for i, key in enumerate(owner):
    frame2.append([i] + list(key))
    for row in owner[key]:
        frame1.append([i] + list(row))


print frame1
print frame2

答案 2 :(得分:-1)

要选择列,如果您知道列的编号,请使用内置调用,否则使用%timeit df.loc[:,['value1','values2']] out: 1000 loops, best of 3: 602 µs per loop %timeit df[[3,4]] out: 1000 loops, best of 3: 295 µs per loop %timeit df.ix[:,['value1','values2']] 1000 loops, best of 3: 412 µs per loop 方法:

df.groupby(['Project','Folder','Owner'],as_index = False).sum().drop(['value1','values2'],1)

至于groupby,只需使用groupby:

window.addEventListener("scroll", function(event) {
    
    var top, green, red, yellow;
  
    top = this.scrollY;
  
    green = document.querySelector("#green"),
    red   = document.querySelector("#red"),
    yellow= document.querySelector("#yellow");
    
    if(top > 100){
      green.classList.add("green", "active");
      red.classList.add("red", "active");
      yellow.classList.add("yellow", "active");
    }
}, false);