我的问题是我的数据(CSV文件)是重复值。但是顺序值对彼此很重要,对彼此而言并不重要。我需要按col a中类似的值对行进行分组,但对于仅彼此接近的值。
IE表示(2,1)= [[0.5,1.5],[1.2,2.3],(2,2)= [[1.3,0.5],[2.5,1.5]],依此类推。
col a posX pos y
0 1 0.5 1.5
1 1 1.2 2.3
2 2 1.3 0.5
3 2 2.5 1.5
4 3 0.7 0.7
5 3 1.6 4.0
6 3 2.1 5.1
7 1 1.2 2.4
8 1 1.5 2.5
9 1 1.6 2.6
10 2 2.0 1.5
因此(2,1)!=(3,1)它们包含可能不同的长度或不同的值
我的数据很大,有25000行 因此我不能确定 (2,1)不会出现多次,所以我不能使用length作为唯一值键
我正在努力合并这些数据而不合并所有这些值,因为当您使用
df.groupby['col a']
它将所有1放在一起。
谢谢
编辑以澄清预期结果并提供更多信息
答案 0 :(得分:0)
我相信需要帮助者Series
:
g = df['col a'].ne(df['col a'].shift()).cumsum()
df.groupby(g)
答案 1 :(得分:0)
所以我设法弄清楚了这个问题。我在大学里更习惯Java,所以花了一些时间才找出问题所在
创建一个空的np.Array
很困难。有必要知道您要初始化的数组的确切大小。我这样做是因为我认为最好的方法是逐行预先填充此空Array,即[[x1,y1], [x2,y2]...]
我将需要使用的值series = df.groupby(['t', 'col a'])
进行了分组,t是知道col a
何时重置的值
给我一系列用唯一的密钥col a
重设的长度数字(t1, 1), (t2, 1)
,每行在每一行中包含一个pd.Dataframe
。
将分组后的系列加到列表中并循环显示列表
unpacked = [x for x in series]
vec_list = list() # empty list to store the array
for v in unpacked:
df = v[1] # v[0] is the key and v[1] is the dataframe of the grouped value
x = df.values # turns the entire df into np.array!
vec_list.append(x)
vec_list
将包含分组的np.Array列表