Skip to main content
 首页 » 编程设计

python之Pandas :展开一长串数字

2025年04月02日26tuyile006

我有这个数据集,其中包含 data 列,其中每个条目(行)如下所示:

11161161166666661661611111111161161111611 

并继续(大约 1000 个字符长度)。长度是可变的,值存储为对象。其中每一个数字都是一个投票结果,不同的数字表示不同的投票行为。

我想稍后对此数据运行回归并执行主成分分析。

但是,我对如何将其放入适当的(稀疏?)数据集感到困惑。

显然,不同的 .str 函数 such as split使用 expand=True 允许此功能。但是,split('') 是不允许的,所以我不知道如何展开每个项目。

df.data.apply(lambda x: list(x)) 
443    [1, 1, 1, 6, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, ... 

会给我一长串数字,但现在我正在努力扩展它。

最后,我要列格式

otherColumn1, otherColumn2, ... data1, data2, data3, data4, ... data31209 

我将如何达到这种格式,是否会有一种替代(稀疏?)系统可能更好地保存我的数据?

请您参考如下方法:

我想你可以试试函数 apply系列:

print df 
                                        data 
0                          11161161166666661 
1                                     161111 
2  11161161166666661661611111111161161111611 
3                  1116116116666666166161111 
 
print df.data.apply(lambda x: pd.Series(list(x))) 
  0  1  2  3  4  5    6    7    8    9  ...    31   32   33   34   35   36  \ 
0  1  1  1  6  1  1    6    1    1    6 ...   NaN  NaN  NaN  NaN  NaN  NaN    
1  1  6  1  1  1  1  NaN  NaN  NaN  NaN ...   NaN  NaN  NaN  NaN  NaN  NaN    
2  1  1  1  6  1  1    6    1    1    6 ...     1    1    6    1    1    1    
3  1  1  1  6  1  1    6    1    1    6 ...   NaN  NaN  NaN  NaN  NaN  NaN    
 
    37   38   39   40   
0  NaN  NaN  NaN  NaN   
1  NaN  NaN  NaN  NaN   
2    1    6    1    1   
3  NaN  NaN  NaN  NaN   
 
[4 rows x 41 columns] 

有很多 NaN 值,也许有帮助 stackreset_index :

df = df.data.apply(lambda x: pd.Series(list(x))).stack().reset_index() 
df.columns = ['a','b','c'] 
print df.head(20) 
    a   b  c 
0   0   0  1 
1   0   1  1 
2   0   2  1 
3   0   3  6 
4   0   4  1 
5   0   5  1 
6   0   6  6 
7   0   7  1 
8   0   8  1 
9   0   9  6 
10  0  10  6 
11  0  11  6 
12  0  12  6 
13  0  13  6 
14  0  14  6 
15  0  15  6 
16  0  16  1 
17  1   0  1 
18  1   1  6 
19  1   2  1