在将循环中的列添加到数据帧时,我很难理解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
?任何想法或解释都会受到欢迎。
谢谢, 星
答案 0 :(得分:0)
事实上并不是熊猫的问题。上面的场景是通过右键单击将代码粘贴到iPython中创建的。使用%paste magic函数(如文档推荐的那样)不会产生此问题。