Pandas 获取数据帧的唯一列对

Pandas 获取数据帧的唯一列对,pandas,dataframe,unique,multiple-columns,Pandas,Dataframe,Unique,Multiple Columns,我有一个熊猫数据框,如下所示: name1 country1 name2 country2 A GER B USA C GER E GER D GER Y AUS E GER A USA 我想得到一个新的数据框,它有两列name和country,其中包含(name1,country1)和(name2,country2) 预

我有一个熊猫数据框,如下所示:

name1   country1    name2   country2
A       GER         B       USA
C       GER         E       GER
D       GER         Y       AUS
E       GER         A       USA
我想得到一个新的数据框,它有两列
name
country
,其中包含
(name1,country1)
(name2,country2)

预期结果应如下所示:

name    country 
A       GER     
C       GER     
D       GER     
E       GER     
B       USA
A       USA
Y       AUS
我在单列中找到了类似的内容。但是,我不知道如何将此解决方案转换为我的问题,即成对的列。

首先通过构造函数过滤列、转置、展平值并创建新的
数据帧:

a = df.filter(like='name').values.T.ravel()
b = df.filter(like='country').values.T.ravel()
df = pd.DataFrame({'name':a, 'country':b}, columns=['name','country'])
print (df)
  name country
0    A     GER
1    C     GER
2    D     GER
3    E     GER
4    B     USA
5    E     GER
6    Y     AUS
7    A     USA
另一个具有未记录函数的解决方案
lreshape

df = pd.lreshape(df, {'name':['name1','name2'],
                      'country':['country1','country2']})
print (df)
  name country
0    A     GER
1    C     GER
2    D     GER
3    E     GER
4    B     USA
5    E     GER
6    Y     AUS
7    A     USA

最后,对于唯一配对,请使用:

首先按构造函数过滤列、转置、展平值并创建新的
DataFrame

a = df.filter(like='name').values.T.ravel()
b = df.filter(like='country').values.T.ravel()
df = pd.DataFrame({'name':a, 'country':b}, columns=['name','country'])
print (df)
  name country
0    A     GER
1    C     GER
2    D     GER
3    E     GER
4    B     USA
5    E     GER
6    Y     AUS
7    A     USA
另一个具有未记录函数的解决方案
lreshape

df = pd.lreshape(df, {'name':['name1','name2'],
                      'country':['country1','country2']})
print (df)
  name country
0    A     GER
1    C     GER
2    D     GER
3    E     GER
4    B     USA
5    E     GER
6    Y     AUS
7    A     USA

最后,对于唯一配对,请使用:


哪个解决方案更好?第一个更快我想哪个解决方案更好?第一个更快我想