bet*_*eta 3 unique multiple-columns dataframe pandas
我有一个 Pandas 数据框,如下所示:
name1 country1 name2 country2
A GER B USA
C GER E GER
D GER Y AUS
E GER A USA
Run Code Online (Sandbox Code Playgroud)
我想获得一个包含两列的新数据框name,country其中包含唯一的(name1, country1)和对(name2,country2)。
预期结果应如下所示:
name country
A GER
C GER
D GER
E GER
B USA
A USA
Y AUS
Run Code Online (Sandbox Code Playgroud)
我在这里找到了类似的单列内容。但是,我不知道如何将此解决方案转换为我的问题,即列对。
首先通过 、转置、展平值过滤列filter并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
Run Code Online (Sandbox Code Playgroud)
另一个具有未记录功能的解决方案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
Run Code Online (Sandbox Code Playgroud)
最后对于独特的对使用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
Run Code Online (Sandbox Code Playgroud)