如何将具有不同值的重复键的数据帧转换为值为列的单个键

时间:2018-02-27 15:15:30

标签: python python-3.x pandas machine-learning anaconda

我有一个给定的数据如下所示

Given data frame (input)

我想将此给定数据更改为以下数据框

modifide dataframe (output)

我正在使用Python库中的panda来完成我的工作。我是熊猫和python的新手任何人都可以帮助我如何使用像table = pd.pivot_table(table, ......)或任何其他python库这样的熊猫函数来解决这个问题。

编辑:

样本数据

df=pd.DataFrame({'Acc':[1,2,4,2,1,3],'Event':list('ABCACA'),'exit':[0,1,1,1,0,0]})

编辑:

我很抱歉@jpp这是我的问题的一个例子:

让我们说这是像这样的输入

`DataFrame({'Acc':[1,2,4,2,1,1,3],'Event':list('ABCACBA'),'exit':[1,1,1,1,0,0,0]})`

我期待这种输出

# Acc  A  B  C  exit
# 1    1  1  1  1   
# 2    1  1  0  1  
# 4    0  0  1  1  
# 3    1  0  0  0 

2 个答案:

答案 0 :(得分:0)

IIUC

df=pd.DataFrame({'Acc':[1,2,4,2,1,3],'Event':list('ABCACA'),'exit':[0,1,1,1,0,0]})

数据输入

#ifndef INC_A
#define INC_A

class ClassB;

class ClassA
{
private:
    ClassB* b;
public:
    void Foo();
}

#endif    

答案 1 :(得分:0)

这是一个解决方案:

import pandas as pd

df = pd.DataFrame({'Acc':[1,2,4,2,1,3],'Event':list('ABCACA'),'exit':[0,1,1,1,0,0]})

df2 = df.groupby(['Acc', 'exit'])['Event'].apply(list).reset_index()
df2 = df2.join(pd.get_dummies(df2['Event'].apply(pd.Series).stack()).sum(level=0))\
         .drop('Event', 1)

#    Acc  exit  A  B  C
# 0    1     0  1  0  1
# 1    2     1  1  1  0
# 2    3     0  1  0  0
# 3    4     1  0  0  1