我希望能够获取数据框中与另一个变量的特定值重合的某个变量的所有不同或唯一值列表。
在Stata中,我会使用类似以下的语句:
levelsof(ID1) if ID2==i
我该如何在Python中实现这个?
Stata的levelsof
等同于pandas的unique()
。它们都会返回一个唯一或不同的值数组。
>>> df=pd.DataFrame({ 'id1':[0,0,1,1,2,2],
'id2':[5,5,5,6,6,6] })
id1 id2
0 0 5
1 0 5
2 1 5
3 1 6
4 2 6
5 2 6
>>> df.loc[ df['id2'] == 5, 'id1' ].unique()
array([0, 1])
ID1
和 ID2
,数据框为df
,那么:df.ID1[df.ID2 == i]
当第二个列的值为i
时,将提供第一列的所有值。
接下来,你可以执行
df.ID1[df.ID2 == i].value_counts()
获取分解:
df.ID1[df.ID2 == i].unique()
获取唯一值,
df.ID1[df.ID2 == i].describe()
获取描述等信息(我不知道levelsof
具体是什么意思)。