1

我正在尝试遍历包含一些数字并希望保存到数据框的列表。

然而,在尝试之后set_valuesconcat这更加困难)。我无法获得合适的分辨率。另一个问题是它必须在读取“END”之前停止......

列表和 DataFrame 如下所示:

words= ['302', '1208', '1208', '0', '179', '1208', '1208', '0', '904', '233', '233', '0', '***END', 'OF', 'REPORT***']

dd = pd.DataFrame(columns=("AA","BB","CC","DD"))

以及我到目前为止使用的代码:

for r in range(40,48,4):
    for s in range(41,49,4):
        for t in range(42,50,4):
            for z in range(43,51,4):
                dd = dd.set_value(len(dd),'AA',words[r])
                dd = dd.set_value(len(dd),'BB',words[s])
                dd = dd.set_value(len(dd),'CC',words[t])
                dd = dd.set_value(len(dd),'DD',words[z])

我想返回如下内容:

AA | BB | CC | DD |    
302|1208|1208|0   |
4

1 回答 1

3

对我来说,concat是不得已而为之。它不可避免地会长毛。而且,就它的价值而言,我认为我从未使用过set_value- 很少有必要变得如此精细。

这是一个解决方案。

In [10]: numbers = np.array(words[:words.index('***END')]).astype('int')

In [11]: columns = ['AA', 'BB', 'CC', 'DD']

In [12]: dd = DataFrame(numbers.reshape(-1, 4), columns=columns)

In [13]: dd
Out[13]: 
    AA    BB    CC  DD
0  302  1208  1208   0
1  179  1208  1208   0
2  904   233   233   0

(如果这-1对您来说是新的,请参阅reshape 的文档。)

于 2013-06-11T22:05:17.893 回答