3

我需要将列迭代地添加到 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

?

4

1 回答 1

2

您首先创建 dict 的想法可能是最好的方法:

>>> from pandas import *
>>> DataFrame({c: [1,2] for c in 'sp'})
   p  s
0  1  1
1  2  2

(这里使用字典推导,在 Python 2.7 中可用)。但是,为了完整起见,您可以 - 低效地 - 使用joinconcat获取逐列工作的方法:

>>> 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 的想法是一种更好的方法。

于 2012-08-18T23:12:28.063 回答