gpt4 book ai didi

python - panda python groupby 取决于其他列表

转载 作者:行者123 更新时间:2023-12-02 02:18:43 25 4
gpt4 key购买 nike

我有 x y 辆汽车,并且想添加一个包含汽车区 block (1-3) 的新列。 “y_block_number_ends”给出 block 结束处的 y 坐标。

import pandas as pd

x_start = 1
y_start = 1
size_city = 5

y_block_number_ends = [2,4]

cars = pd.DataFrame({'x': np.repeat(np.arange(x_start,x_start+size_city),size_city),
'y': np.tile(np.arange(y_start,y_start+size_city),size_city)})

#cars['block_y']= cars.where([cars['y'] > 0 | (cars['y'] <= 2)])

print(cars)

新的数据框看起来像这样

    x  y    block
0 1 1 1
1 1 2 1
2 1 3 2
3 1 4 2
4 1 5 3
5 2 1 1
6 2 2 1
7 2 3 2
8 2 4 2
9 2 5 3
10 3 1 1
11 3 2 1
12 3 3 2
13 3 4 2
14 3 5 3
15 4 1 1
16 4 2 1
17 4 3 2
18 4 4 2
19 4 5 3
20 5 1 1
21 5 2 1
22 5 3 2
23 5 4 2
24 5 5 3

最佳答案

pd.cut

cars.assign(block=pd.cut(cars.y, [0, 2, 4, float('inf')], labels=[1, 2, 3]))

x y block
0 1 1 1
1 1 2 1
2 1 3 2
3 1 4 2
4 1 5 3
5 2 1 1
6 2 2 1
7 2 3 2
8 2 4 2
9 2 5 3
10 3 1 1
11 3 2 1
12 3 3 2
13 3 4 2
14 3 5 3
15 4 1 1
16 4 2 1
17 4 3 2
18 4 4 2
19 4 5 3
20 5 1 1
21 5 2 1
22 5 3 2
23 5 4 2
24 5 5 3

搜索排序

ends = np.array([2, 4])
labels = np.array([1, 2, 3])
cars.assign(block=labels[ends.searchsorted(cars.y)])

x y block
0 1 1 1
1 1 2 1
2 1 3 2
3 1 4 2
4 1 5 3
5 2 1 1
6 2 2 1
7 2 3 2
8 2 4 2
9 2 5 3
10 3 1 1
11 3 2 1
12 3 3 2
13 3 4 2
14 3 5 3
15 4 1 1
16 4 2 1
17 4 3 2
18 4 4 2
19 4 5 3
20 5 1 1
21 5 2 1
22 5 3 2
23 5 4 2
24 5 5 3

关于python - panda python groupby 取决于其他列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66770790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com