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
最后,对于唯一配对,请使用:
哪个解决方案更好?第一个更快我想哪个解决方案更好?第一个更快我想