Pandas Dataframe Append或Set_Value

时间:2013-06-11 21:53:16

标签: python append pandas dataframe

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

但是在尝试set_valuesconcat之后(这更加困难)。我无法得到合适的分辨率。另一个问题是它必须在阅读“结束”之前停止......

列表和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   |

1 个答案:

答案 0 :(得分: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对您来说不熟悉,请参阅documentation for reshape。)