DataFrame 的 Pandas 子集,每个类具有固定数量的值 [重复]

Posted

技术标签:

【中文标题】DataFrame 的 Pandas 子集,每个类具有固定数量的值 [重复]【英文标题】:Pandas subset of DataFrame with fixed number of value per class [duplicate] 【发布时间】:2019-10-08 16:19:31 【问题描述】:

我有一个 pandas DataFrame df,其中包含一个列 ID 和一个列 Type。这是一个例子:

print(df)

>>
+---------+---------+
|       ID|     Type|
+---------+---------+
|      AAA|        A|
|      BBB|        B|
|      CCC|        B|
|      DDD|        A|
|      EEE|        B|
|      FFF|        A|
|      GGG|        B|
+---------+---------+

从该 DataFrame 中,我想为每个 Type 提取一个带有 X 不同值的子 DataFrame。

这里是前面的例子(顺序无关紧要):

X = 2
new_df = do_something(df, X)
print(new_df)

>>
+---------+---------+
|       ID|     Type|
+---------+---------+
|      AAA|        A|
|      DDD|        A|
|      BBB|        B|
|      CCC|        B|
+---------+---------+

有简单的方法吗?

【问题讨论】:

【参考方案1】:

使用pandas.DataFrame.groupby.head:

import pandas as pd

df.groupby('Type').head(2)

输出:

    ID Type
0  AAA    A
1  BBB    B
2  CCC    B
3  DDD    A

【讨论】:

以上是关于DataFrame 的 Pandas 子集,每个类具有固定数量的值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何更新 MultiIndex pandas DataFrame 的子集

选择由 DatetimeIndex 索引的 Pandas DataFrame 的子集和时间戳列表

Python/Pandas:通过匹配的索引标准对 Dataframe 进行子集化

根据时间对 pandas DataFrame 进行子集化

在 Pandas DataFrame 子集(副本)上设置值很慢

如何将 Pandas DataFrame 的列和行子集转换为 numpy 数组?