将所有行转换为Series对象pandas



我有一个像这样的数据框架:

time       0           1           2           3           4           5    
0   3.477110    3.475698    3.475874    3.478345    3.476757    3.478169    
1   3.422223    3.419752    3.417987    3.421341    3.418693    3.418340    
2   3.474110    3.474816    3.477463    3.479757    3.479581    3.476757    
3   3.504995    3.507112    3.504995    3.505877    3.507112    3.508171    
4   3.426106    3.424870    3.422399    3.421517    3.419046    3.417105    
6   3.364336    3.362571    3.360453    3.358335    3.357806    3.356924
7   3.364336    3.362571    3.360453    3.358335    3.357806    3.356924
8   3.364336    3.362571    3.360453    3.358335    3.357806    3.356924

但是sktime要求数据的格式是每个数据帧项都是一个单独的时间序列:

3.477110,3.475698,3.475874,3.478345,3.476757,3.478169   
3.422223,3.419752,3.417987,3.421341,3.418693,3.418340   
3.474110,3.474816,3.477463,3.479757,3.479581,3.476757   
3.504995,3.507112,3.504995,3.505877,3.507112,3.508171   
3.426106,3.424870,3.422399,3.421517,3.419046,3.417105   
3.364336,3.362571,3.360453,3.358335,3.357806,3.356924

实际上,因为我有6个cols的数据,每一行应该成为一个独立的系列(长度为6),最终形状应该是(9,1)(在这个例子中),而不是(9,6)它现在是

我尝试遍历行,使用各种转换技术,但无济于事,我正在寻找类似于.squeeze()方法的东西,但适用于多个数据点,如何去做?

我想你需要这样的东西。

result = df.set_index('time').apply(np.array, axis=1)
print(result)
print(type(result))
print(result.shape)
time
0    [3.47711, 3.475698, 3.475874, 3.478345, 3.4767...
1    [3.422223, 3.419752, 3.417987, 3.421341, 3.418...
2    [3.47411, 3.474816, 3.477463, 3.479757, 3.4795...
3    [3.504995, 3.507112, 3.504995, 3.505877, 3.507...
4    [3.426106, 3.42487, 3.422399, 3.421517, 3.4190...
6    [3.364336, 3.362571, 3.360453, 3.358335, 3.357...
7    [3.364336, 3.362571, 3.360453, 3.358335, 3.357...
8    [3.364336, 3.362571, 3.360453, 3.358335, 3.357...
dtype: object
<class 'pandas.core.series.Series'>
(8,)

这是一个长度为8的pd.Series(在您的示例中数据索引5缺失;)),该系列的每个值都是一个np.array。如果您愿意,也可以使用list(在apply语句中)。

将所有列转换为str,因为join方法只接受字符串。

然后用","分隔符

df.astype(str).agg(','.join,axis=1)
df.astype(str).agg(','.join,axis=1).shape
(9,)