我有一只DataFrame像熊猫一样的熊猫.
df = pd.DataFrame({'id' : [1,1,1,2,2,3,3,3,3,4,4,5,6,6,6,7,7],
'value' : ["first","second","second","first",
"second","first","third","fourth",
"fifth","second","fifth","first",
"first","second","third","fourth","fifth"]})
Run Code Online (Sandbox Code Playgroud)
我想通过["id","value"]对此进行分组,并得到每个组的第一行.
id value
0 1 first
1 1 second
2 1 second
3 2 first
4 2 second
5 3 first
6 3 third
7 3 fourth
8 3 fifth
9 4 second
10 4 fifth
11 5 first
12 6 first
13 6 second
14 6 third
15 7 fourth
16 7 fifth
Run Code Online (Sandbox Code Playgroud)
预期结果
id value
1 first
2 first
3 first
4 second
5 …Run Code Online (Sandbox Code Playgroud) 我来自sql背景,我经常使用以下数据处理步骤:
EX:
df = pd.DataFrame({'key1' : ['a','a','a','b','a'],
'data1' : [1,2,2,3,3],
'data2' : [1,10,2,3,30]})
df
data1 data2 key1
0 1 1 a
1 2 10 a
2 2 2 a
3 3 3 b
4 3 30 a
Run Code Online (Sandbox Code Playgroud)
我正在寻找如何做PANDAS相当于这个SQL窗口函数:
RN = ROW_NUMBER() OVER (PARTITION BY Key1 ORDER BY Data1 ASC, Data2 DESC)
data1 data2 key1 RN
0 1 1 a 1
1 2 10 a 2
2 2 2 a 3
3 3 3 b 1
4 3 30 …Run Code Online (Sandbox Code Playgroud) 在进行了一些转换之后dataframe,我得到了以下内容,在这种情况下如何通过列获取前n条记录short_name并使用其他作为指标frequency.我读过这篇文章,但两个解决方案的问题是他们摆脱了列product_name,他们只保留了分组列,我需要保留它们.
short_name product_id frequency
Yoghurt y cereales 975009684 32
Yoghurt y cereales 975009685 21
Yoghurt y cereales 975009700 16
Yoghurt y Cereales 21097 16
Yoghurt Bebible 21329 68
Yoghurt Bebible 21328 67
Yoghurt Bebible 21500 31
Run Code Online (Sandbox Code Playgroud) 我正在寻找以下数据的每个组的前2个值。
Brand | Product | Rank
A | P1 | 1000
| P2 | 1210
| P3 | 2000
| P4 | 600
| P5 | 756
| P6 | 867
B | P1 | 549
| P2 | 1572
| P3 | 3490
| P4 | 2341
| P5 | 431
| P6 | 321
C | P1 | 421
| P2 | 121
| P3 | 805
| P4 | 1202
| P5 | 4032
| P6 | …Run Code Online (Sandbox Code Playgroud) 我有一个像
item date hour value
a 4 12 123
a 6 11 54
b 1 7 146
c 8 1 97
a 9 5 10
c 4 5 114
b 1 7 200
... ... ... ...
Run Code Online (Sandbox Code Playgroud)
我想保持前10名item由value(丢弃其余的是确定),无论任何其他列。它们没有排序。
按照我的输入示例,由于我没有编写足够的内容来从每个项目中获得 10 个,如果我想要前 1 个,预期的输出将是这样的:
item date hour value
a 4 12 123
c 4 5 114
b 1 7 200
... ... ... ...
Run Code Online (Sandbox Code Playgroud)
我看过这个答案,但我不确定如何告诉熊猫进行value计算。