pandas - Python选择N行数据框
问题描述
我有一个包含 2 列的数据框,我想从每列 A 的列 B 中选择 N 行
A B
0 A
0 B
0 I
0 D
1 A
1 F
1 K
1 L
2 R
对于 A 列中的每个唯一数字,从 B 列中给我 N 个随机行:如果 N == 2,则生成的数据框看起来像。如果 A 列最多没有 N 行,则返回 A 列的所有内容
A B
0 A
0 D
1 F
1 K
2 R
解决方案
使用DataFrame.sample
每组GroupBy.apply
测试长度的组if-else
:
N = 2
df1 = df.groupby('A').apply(lambda x: x.sample(N) if len(x) >=N else x).reset_index(drop=True)
print (df1)
A B
0 0 I
1 0 D
2 1 A
3 1 K
4 2 R
或者:
N = 2
df1 = df.groupby('A', group_keys=False).apply(lambda x: x.sample(N) if len(x) >=N else x)
print (df1)
A B
0 0 A
3 0 D
5 1 F
6 1 K
8 2 R
推荐阅读
- reactjs - 无法在 Material UI 中更改 KeyboardTimePicker 的时间格式
- ckeditor - 在 CKEditor 5 工具栏中更改按钮标签
- google-chrome - 无法在 mac os 中从 chrome 下载 .txt 扩展文件。文件内容类型为“text/csv”
- bash - 在字符串 a 之后替换第一次出现的字符串 b
- asp.net - 如何构建 csv 字符串并将其作为文件流式传输到客户端(.net c#)
- r - 如何使用闪亮的范围滑块过滤传单点图上的点
- python - Pandas - 并行化 astype 函数
- bash - 如何修复“bash:flutter:找不到命令”错误?
- r - tesseract_engine_internal 出错,无法找到训练数据
- javascript - 为什么“[][[]]”在 JavaScript 中未定义