【发布时间】:2021-07-16 08:49:32
【问题描述】:
df = pd.DataFrame([['SAM', 23, 1],
['SAM', 23, 2],
['SAM', 23, 1],
['SAM', 23, 3],
['BILL', 36, 1],
['BILL', 36, 2],
['BILL', 36, 3],
['BILL', 36, 1],
['JIMMY', 33, 4],
['JIMMY', 33, 2],
['JIMMY', 33, 2],
['JIMMY', 33, 3],
['CARTER', 25, 3],
['CARTER', 25, 4],
['CARTER', 25, 5],
['CARTER', 25, 4],
['GRACE', 27, 4],
['GRACE', 27, 5],
['GRACE', 27, 6],
['TOMMY', 32, 7]])
df.columns = ['A', 'B', 'C']
我需要在数据框中保留按“A”列分组的“C”列最小值的所有行,并保持 B 不变。 几乎相同的主题here 但如果我使用
df.loc[df.groupby('A').C.idxmin()]
只剩下最少一行,我需要所有这些。 预期结果:
【问题讨论】:
-
我们可以编写执行此操作的代码,但您要求有意保留重复的行,这几乎没有任何价值。您能否展示我们想要这样做的任何合法用例?
-
另外,大多数解决方案都不会保留索引,他们会用默认的 0,1,2... 覆盖它,(但是您的原始数据框没有非默认索引,所以你不会注意到的)。但如果你这样做
df.index = list(string.ascii_lowercase)[:20]你会看到。 -
是的。在实际情况下(这是一个示例)我有一个包含 500k+ 行的数据框。和 B 列的值不同,因此行不重复。我很抱歉让你认为他们在现实生活中是一样的。只是复制粘贴它们。
-
我的意思是:如果您想要保留(非默认)索引的解决方案,请编辑您的问题并提供具有(非默认)索引的数据示例。您已经接受了一个不接受的解决方案。
标签: python pandas pandas-groupby