如何重塑保留唯一信息的数据框?

时间:2018-11-15 09:07:49

标签: python pandas dataframe

我有一个数据框df1,其中包含代理及其状态之间的交互信息。

df1
     Name1   Name2  Name1_x Y_x Name1_y Y_y
0    Jack    John   Jack     0  John     1
1    Sarah   Jack   Sarah    0  Jack     0
2    Sarah   Eva    Sarah    0  Eva      1
3    Eva     Tom    Eva      1  Tom      0
4    Eva     John   Eva      1  John     1

我想要一个名称和状态为y的数据框,例如

df2
     Name   Y
0    Eva    1
1    John   1
2    Tom    0
3    Sarah  0
4    Jack   0

2 个答案:

答案 0 :(得分:2)

您可以使用:

df2 = pd.DataFrame(np.r_[df1.iloc[:,2:4], df1.iloc[:,4:6]], columns=['Name', 'Y']).drop_duplicates().reset_index(drop=True)

输出:

    Name  Y
0   Jack  0
1  Sarah  0
2    Eva  1
3   John  1
4    Tom  0

答案 1 :(得分:0)

如果我理解正确,那么我想到的最简洁的方法就是:

1%

这产生

df2 = pd.DataFrame(df1.loc[:, 'Name1_x':].values.reshape(-1, 2), columns=['Name', 'Y']).drop_duplicates()

您可以排序的

    Name  Y
0   Jack  0
1   John  1
2  Sarah  0
5    Eva  1
7    Tom  0

使最终结果为

df2 = df2.sort_values(by=['Y', 'Name'], ascending=[False, True]).reset_index(drop=True)                                                                                                

(我不知道杰克为什么会出现在您期望的输出中的最后一位,我假设是拼写错误或没关系。)