pandas panda如何获取具有特定值计数的所有行

mftmpeh8  于 2023-01-04  发布在  其他
关注(0)|答案(1)|浏览(157)

我有一个数据框

df = 

    C1 C2
    a.  2
    d.  8  
    d.  5  
    d.  5  
    b.  3
    b.  4
    c.  5
    a.  6
    b.  7

我想要取所有C1中的值的计数〈= 2的行,并添加一个低的新col,否则保留原始值,所以新的df将如下所示:

df_new = 
C1 C2 type
a.  2  low
d.  8  d
d.  5  d
d.  5  d
b.  3. b
b.  4  b
c.  5. low
a.  6. low
b.  7  b

我该怎么做呢?
我还想得到一个所有低的类型的列表(这里是['a ','c'])
谢啦,谢啦

qco9c6ql

qco9c6ql1#

你可以使用pandas.DataFrame.groupby并计算每组中'C1'的值,然后在pandas.DataFrame.transform中使用lambda并返回low或该组的原始值,或者我们可以在groupby的结果上使用numpy.where

df['type'] = df.groupby('C1')['C1'].transform(lambda g: 'low' if len(g)<=2 else g.iloc[0][:-1])

# Or we can use 'numpy.where' on the result of groupby
g = df.groupby('C1')['C1'].transform('size')
df['type'] = np.where(g<=2, 'low', df['C1'].str[:-1])
print(df)

输出:

C1  C2 type
0  a.   2  low
1  d.   8    d
2  d.   5    d
3  d.   5    d
4  b.   3    b
5  b.   4    b
6  c.   5  low
7  a.   6  low
8  b.   7    b

相关问题