将循环中的列添加到Pandas DataFrame中

时间:2014-09-25 13:35:30

标签: python pandas dataframe

在将循环中的列添加到数据帧时,我很难理解Python的Pandas库的行为。我想循环遍历一个对象列表(这些实际上是日期的元组),在每个循环中添加了许多列。简化版本如下:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(6).reshape(2, 3), columns=('a', 'b', 'c'))

for x in range(10):

    # Printed on each loop:
    print('Adding column type 1')
    df['{}_type1'.format(x)] = 'Type 1'

    # Printed on last loop only:
    print('Adding column type 2')
    df['{}_type2'.format(x)] = 'Type 2'

我希望这会在数据帧中添加20个新列(每个循环2个),而是添加11列;类型1'的前10个,'类型2'的第11个。此外,第一次打印输出10次,第二次打印只输出一次:

Adding column type 1
Adding column type 1
Adding column type 1
Adding column type 1
Adding column type 1
Adding column type 1
Adding column type 1
Adding column type 1
Adding column type 1
Adding column type 1
Adding column type 2

我是Pandas的新手,所以可能会遗漏一些基本的东西,但这对我来说似乎是一个错误,也许是在进行矢量化操作的逻辑中的流氓continue?任何想法或解释都会受到欢迎。

谢谢, 星

1 个答案:

答案 0 :(得分:0)

事实上并不是熊猫的问题。上面的场景是通过右键单击将代码粘贴到iPython中创建的。使用%paste magic函数(如文档推荐的那样)不会产生此问题。