Python 如何重塑数据帧以保持唯一信息?
我有一个数据框Python 如何重塑数据帧以保持唯一信息?,python,pandas,dataframe,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
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
您可以使用:
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
如果我理解正确,我能想到的实现您的结果的最简洁的方法是:
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)
最终的结果是
Name Y
0 Eva 1
1 John 1
2 Jack 0
3 Sarah 0
4 Tom 0
(我不知道为什么Jack最后出现在您的预期输出中,我假设输入错误或者这无关紧要。)@pygo我只有一个DataFrameOK,我看到信息更新。您能解释更多关于交互的信息吗,比如我看到最初的三列,然后是状态,然后是另一列和状态,获得新的期望状态的关键是什么。