我有这个数据集,其中包含 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
值,也许有帮助 stack
和 reset_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