【发布时间】:2021-07-21 08:27:00
【问题描述】:
如何选择行数 >= 2 的所有行?
我有以下熊猫数据框。
df = pd.DataFrame({"date": ["2000-01-03", "2000-01-04", "2000-01-04", "2000-01-04", "2000-01-04",
"2000-01-03", "2000-01-04", "2000-01-05", "2000-01-05",
"2000-01-03", "2000-01-05", "2000-01-05",
"2000-01-04", "2000-01-05"],
"sym": ["A", "A", "A", "A", "A" ,"B", "B","B", "B" ,"C", "C", "C", "D", "E"],
"val1": [1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2],
"val2": [2, 2, 2, 2, 2, 2, 3, 3, 3, 1, 1, 2, 2, 2]
})
df
date sym val1 val2
0 2000-01-03 A 1 2
1 2000-01-04 A 1 2
2 2000-01-04 A 1 2
3 2000-01-04 A 1 2
4 2000-01-04 A 1 2
5 2000-01-03 B 2 2
6 2000-01-04 B 2 3
7 2000-01-05 B 2 3
8 2000-01-05 B 2 3
9 2000-01-03 C 3 1
10 2000-01-05 C 3 1
11 2000-01-05 C 3 2
12 2000-01-04 D 2 2
13 2000-01-05 E 2 2
我申请了
df.groupby(['date', 'sym'], as_index=False).mean().sort_values(['sym','date'])
为每个 sym 的给定日期平均 val1、val2。
date sym val1 val2
0 2000-01-03 A 1.0 2.0
3 2000-01-04 A 1.0 2.0
1 2000-01-03 B 2.0 2.0
4 2000-01-04 B 2.0 3.0
6 2000-01-05 B 2.0 3.0
2 2000-01-03 C 3.0 1.0
7 2000-01-05 C 3.0 1.5
5 2000-01-04 D 2.0 2.0
8 2000-01-05 E 2.0 2.0
接下来,我需要为“sym”选择行数 >= 2 的所有行。 在此示例中,生成的 df 将是 sym=A,B,C 中的所有行
期望的输出:
date sym val1 val2
0 2000-01-03 A 1.0 2.0
3 2000-01-04 A 1.0 2.0
1 2000-01-03 B 2.0 2.0
4 2000-01-04 B 2.0 3.0
6 2000-01-05 B 2.0 3.0
2 2000-01-03 C 3.0 1.0
7 2000-01-05 C 3.0 1.5
我尝试了 groupby、pivot、count 的组合,但没有成功。
【问题讨论】:
-
首先你说你需要选择 count >= 50 的行,然后最后是 row-count >= 3。好的,假设您需要基于 sym 计数 >= 3 的行,但是 A、C 如何出现在您想要的输出中?你能澄清一下吗?
-
@SomeDude 感谢您指出这一点。我不擅长将实际问题转换为示例代码。 A,B,C 被选中 b'cos row-count >= 2.
标签: python pandas dataframe pivot-table