Python: sample from dataframe,存储非采样
Python: sample from dataframe, storing the non-sampled
我有一个 pandas DataFrame。
假设我想对每组中的两个人进行抽样,我使用以下代码获取新的数据框:
sample_df = df.groupby("category").apply(lambda group_df: group_df.sample(2, random_state=1234)
我想创建一个存储非抽样人员的数据框。
sample_df
stil 具有原始 df
的索引,所以我可能必须对此做一些事情,但我不确定是什么...
提前致谢!
首先将group_keys=False
添加到groupby
以避免category
到MultiIndex
:
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'category':list('aaabbb')
})
sample_df = (df.groupby("category", group_keys=False)
.apply(lambda group_df: group_df.sample(2, random_state=1234)))
print(sample_df)
A B category
0 a 4 a
1 b 5 a
3 d 5 b
4 e 5 b
因此可能使用 boolean indexing
by Index.isin
过滤原始索引值,并使用 ~
:
过滤反向掩码
non_sample_df = df[~df.index.isin(sample_df.index)]
print(non_sample_df)
A B category
2 c 4 a
5 f 4 b
我有一个 pandas DataFrame。 假设我想对每组中的两个人进行抽样,我使用以下代码获取新的数据框:
sample_df = df.groupby("category").apply(lambda group_df: group_df.sample(2, random_state=1234)
我想创建一个存储非抽样人员的数据框。
sample_df
stil 具有原始 df
的索引,所以我可能必须对此做一些事情,但我不确定是什么...
提前致谢!
首先将group_keys=False
添加到groupby
以避免category
到MultiIndex
:
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'category':list('aaabbb')
})
sample_df = (df.groupby("category", group_keys=False)
.apply(lambda group_df: group_df.sample(2, random_state=1234)))
print(sample_df)
A B category
0 a 4 a
1 b 5 a
3 d 5 b
4 e 5 b
因此可能使用 boolean indexing
by Index.isin
过滤原始索引值,并使用 ~
:
non_sample_df = df[~df.index.isin(sample_df.index)]
print(non_sample_df)
A B category
2 c 4 a
5 f 4 b