基本上,如果我的pandas数据框的列如下所示:
[1 1 1 2 2 2 3 3 3 1 1]
我希望将其转化为以下内容:
[1 2 3 1]
答案 0 :(得分:1)
据我所知,pandas没有内置工具来执行此操作。但是自己做的不是很多代码。
import pandas
example_series = pandas.Series([1, 1, 1, 2, 2, 3])
def collapse(series):
last = ""
seen = []
for element in series:
if element != last:
last = element
seen.append(element)
return seen
collapse(example_series)
在上面的代码中,您将遍历一个系列的每个元素,并检查它是否与最后看到的元素相同。如果不是,请存储它。如果是,请忽略该值。
如果需要将返回值作为一个系列处理,可以将函数的最后一行更改为:
return pandas.Series(seen)
答案 1 :(得分:1)
您可以编写执行以下操作的函数:
Debug.Log(w.error); // place this before or after the other debug.log
答案 2 :(得分:1)
您可以使用DataFrame的差异和索引:
>>> df = pd.DataFrame([1,1,2,2,2,2,3,3,3,3,1])
>>> df[df[0].diff()!=0]
0
0 1
2 2
6 3
10 1
>>> df[df[0].diff()!=0].values.ravel() # If you need an array
array([1, 2, 3, 1])
系列同样适用:
>>> df = pd.Series([1,1,2,2,2,2,3,3,3,3,1])
>>> df[df.diff()!=0].values
array([1, 2, 3, 1])
答案 3 :(得分:0)
您可以使用 Date WaterTemp
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20 HWT
20 21 HWT
21 22 HWT
22 23 HWT
23 24 HWT
24 25 HWT
25 26 HWT
26 27 HWT
27 28 HWT
28 29 HWT
29 30 HWT
30 31 HWT
31 32 HWT
32 33 HWT
33 34 HWT
34 35 HWT
35 36 HWT
36 37 HWT
37 38
38 39
39 40
创建一个布尔掩码来比较该行与上一行:
shift