我需要将列迭代地添加到 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
?
我需要将列迭代地添加到 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
?
您首先创建 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 的想法是一种更好的方法。