1

使用:Mac OSX Lion 上的 Python 2.7 和 Pandas 0.11.0

我正在尝试创建一个空的DataFrame,然后从另一个数据帧中填充它,基于for loop.

我发现当我构造DataFrame然后使用for loop如下:

data = pd.DataFrame()
for item in cols_to_keep:
    if item not in dummies:
        data = data.join(df[item])

结果为空DataFrame,但要从其他列添加相应列的标题DataFrame

4

2 回答 2

5

那是因为您使用的连接不正确。

您可以使用列表推导将 DataFrame 限制为您想要的列:

df[[col for col in cols_to_keep if col not in dummies]]
于 2013-06-08T16:53:46.337 回答
2

仅根据您知道要保留的列创建一个新框架,而不是先创建一个空的框架怎么样?

import pandas as pd
import numpy as np

df = pd.DataFrame({'a':np.random.randn(5),
                    'b':np.random.randn(5),
                    'c':np.random.randn(5),
                    'd':np.random.randn(5)})
cols_to_keep = ['a', 'c', 'd']
dummies = ['d']
not_dummies = [x for x in cols_to_keep if x not in dummies]
data = df[not_dummies]
data

          a         c
0  2.288460  0.698057
1  0.097110 -0.110896
2  1.075598 -0.632659
3 -0.120013 -2.185709
4 -0.099343  1.627839
于 2013-06-08T16:55:31.147 回答