【发布时间】:2020-05-01 04:30:05
【问题描述】:
对于输入:
df = pd.DataFrame(np.array([[1, "A"],[2, "A"],[3, "B"],[4, "C"],[5, "D" ],[6, "A" ],[7, "B" ],[8, "A" ],[9, "C" ],[10, "D" ],[11,"A" ],
[12, "A"],[13, "B"],[14, "B"],[15, "D" ],[16, "A" ],[17, "B" ],[18, "A" ],[19, "C" ],[20, "D" ],[21,"A" ],
[22, "A"],[23, "A"],[24, "C"],[25, "D" ],[26, "A" ],[27, "C" ],[28, "A" ],[29, "C" ],[30, "D" ] ]),
columns=['No.', 'Value'])
我得到以下输出:
No. Value
0 1 A
1 2 A
2 3 B
3 4 C
4 5 D
5 6 A
6 7 B
7 8 A
8 9 C
9 10 D
10 11 A
11 12 A
12 13 B
13 14 B
14 15 D
15 16 A
16 17 B
17 18 A
18 19 C
19 20 D
20 21 A
21 22 A
22 23 A
23 24 C
24 25 D
25 26 A
26 27 C
27 28 A
28 29 C
29 30 D
现在我想创建数据序列。该序列定义了一个值区域,直到出现值“D”。例如在第一个序列中,有从 No.1 到 No.5 的行(包括) 第二个序列是从No.6到No.10(包括)等等。
之后我想将值编码为数字:A -> 1, B->2, C->3, D->4 如果在一个序列中,值 A 后面跟着另一个 A 或多个 A,它将被汇总为一个数字 1。这同样适用于其他值。
第一个序列 = A,A,B,C,D 为此,我想要这样的东西 = [1,2,3,4]
对于整个输出,我想要这样的东西:
result = list([[1,2,3,4],[1,2,1,3,4],[1,2,4],[1,2,1,3,4],[1,3,4],[1,3,1,3,4]])
输出:
[[1, 2, 3, 4],
[1, 2, 1, 3, 4],
[1, 2, 4],
[1, 2, 1, 3, 4],
[1, 3, 4],
[1, 3, 1, 3, 4]]
【问题讨论】:
标签: python arrays pandas list dataframe