得到一个大熊猫数据帧的列的唯一对
问题描述:
我有一个熊猫数据帧,看起来如下:得到一个大熊猫数据帧的列的唯一对
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
我已经找到了单柱here类似的东西。但是,我不知道如何将此解决方案转换为我的问题,即成对的列。
答
第一过滤列由filter
,移调,压平值,并通过构造函数创建新DataFrame
:
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
而去年为唯一对:
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
另一种解决方案使用drop_duplicates
:
df = df.drop_duplicates()
print (df)
name country
0 A GER
1 C GER
2 D GER
3 E GER
4 B USA
6 Y AUS
7 A USA
哪个解决方案比较好? – beta
首先是我认为更快 – jezrael