如何获得的唯一值多列的一个唯一值的另一列在Pandas?

tkclm6bt  于 2023-02-07  发布在  其他
关注(0)|答案(3)|浏览(162)

我有一个如下所示的 Dataframe :

import pandas as pd
df = pd.DataFrame({'val':['a', 'a', 'b', 'a', 'c'], 'g_1':[0, 0, 1,0,2], 'g_2':[0, 0, 0,0,1]})

现在,为了获得列val的所有唯一值,我做了如下操作:

print(df['g_1'].groupby(df['val']).unique().apply(pd.Series))
     0
val   
a    0
b    1
c    2

然而,我想添加列g_2以及,但似乎我得到这个错误:

print(df[['g_1', 'g_2']].groupby(df['val']).unique().apply(pd.Series))

我期待得到这样的东西:

g_1  g_2
val   
a    0    0
b    1    0
c    2    1
jaxagkaj

jaxagkaj1#

只需使用df.duplicated()提取非重复项。

df[~df.duplicated()].set_index('val')
nhn9ugyo

nhn9ugyo2#

使用np.unique作为groupbyagg函数:

import numpy as np

>>> df.groupby('val')[['g_1', 'g_2']].agg(np.unique)
     g_1  g_2
val          
a      0    0
b      1    0
c      2    1
shstlldc

shstlldc3#

print(df.groupby(df['val']).agg({g:lambda x:x.unique() for g in df.columns[1:]}))

#      g_1  g_2
# val          
# a      0    0
# b      1    0
# c      2    1

相关问题