我正在尝试制作一个df.groupby
,并仅将组中所有行的负值行保留在列中。
例如,我有一个这样的数据框
df = pd.DataFrame({'name':['Lucas','Marie','Lucy','Lucas','Marie','Lucas','Phil','Marie','Marie','Lucy','Lucas']})
df['rand'] = np.random.randint(-5, 2, df.shape[0])
df
name rand
0 Lucas -1
1 Marie -5
2 Lucy -4
3 Lucas -2
4 Marie -1
5 Lucas -3
6 Phil 0
7 Marie 1
8 Marie -4
9 Lucy 0
10 Lucas -1
我正在尝试df.groupby('name')
并仅保留其所有值都在df['rand']<0
中的那些名称。在这种情况下,我将保留“ Lucas”,因为它是唯一在“ rand”列中具有所有负值的名称。
那么,我的目标输出是:
name rand
0 Lucas -1
3 Lucas -2
5 Lucas -3
10 Lucas -1
通常我会做df= df[df['rand']<0]
,但从逻辑上讲,它不会在这里完成工作。
我该怎么做?
谢谢!
答案 0 :(得分:2)
您可以先检查下面的/app/publish
,然后将布尔序列按WORKDIR /app
RUN cp /app/publish /app/
分组,并用cp: cannot stat '/app/publish/': No such file or directory
进行变换。然后使用结果索引数据框:
0
简化类似情况的一般程序:
GroupBy
分组列transform
和df['name']
(或all
)。我们需要df[df.rand.lt(0).groupby(df.name).transform('all')]
name rand
0 Lucas -1
3 Lucas -2
5 Lucas -3
10 Lucas -1
,因为它保持原始大小