我需要迭代地将列添加到DataFrame对象。这是一个简化版本:
>>> x=DataFrame()
>>> for i in 'ps':
... x = x.append(DataFrame({i:[3,4]}))
...
>>> x
p s
0 3 NaN
1 4 NaN
0 NaN 3
1 NaN 4
我该怎么办才能获得:
p s
0 3 3
1 4 4
答案 0 :(得分:2)
首先创建dict的想法可能是最好的方法:
>>> from pandas import *
>>> DataFrame({c: [1,2] for c in 'sp'})
p s
0 1 1
1 2 2
(这里使用字典理解,在Python 2.7中提供)。但是,为了完整起见,您可以 - 效率低下 - 使用join
或concat
来逐列方法:
>>> df = DataFrame()
>>> for c in 'sp':
... df = concat([df, DataFrame({c: [1,2]})], axis=1)
...
>>> print df
s p
0 1 1
1 2 2
>>>
>>> df = DataFrame()
>>> for c in 'sp':
... df = df.join(DataFrame({c: [1,2]}), how='outer')
...
>>> print df
s p
0 1 1
1 2 2
[你可以看到列顺序的不同。]但是你构建dict然后从构造的dict构造DataFrame的想法是一个更好的方法。