0

问题描述:我有两个数据框(“Train”和“Test”),列几乎相同(“Test”有两个变量未出现在 Train 中,Train 有一个变量未出现在 Test 中;但是,为了生成“Test”,我需要在 R 中进行一些处理,因为我不知道如何在 Pandas 中进行相当于 PLYR 的完全连接。最终结果是所有空格和撇号都被 R 中的句点替换测试中的数据框名称。

我目前的问题是我需要在两个数据帧中具有相同的变量名(减去测试中的额外变量名)。我目前的尝试如下:

Test.columns[2:]=Train.columns[1:]
After index points 2 and 1, columns are the same

这似乎在名义上有效;当我进入

Test.columns

我得到了预期的输出。但是,问题会在后面出现。如果满足条件,我正在尝试删除 Train 中的一列,以及 Test 中的同一列。

for i in Train.columns[1:]:
     if condition:
        del Train[i]
        del Test[i]

哪个生产

TypeError: 'NoneType' object is not iterable

如果我只是输入,我会得到同样的错误

Test

但是如果我输入类似的东西,就会得到预期的输出

Test['varname']

我想我希望有人会立即认识到我在列名重新分配中犯下的任何严重罪行,这会产生类型错误(如果我只是从 Train 中删除,我没有问题),或者建议一种替代方法来更改列名.

我非常感谢任何帮助。

4

1 回答 1

0

我建议使用renamewith 函数,例如将撇号和空格替换为.

In [11]: df = pd.DataFrame([[1, 2], [3, 4]], columns=["don't", "no way"])

In [12]: df.rename(columns=lambda x: x.replace("'", '.').replace(' ', '.'))
Out[12]: 
   don.t  no.way
0      1       2
1      3       4

最好不必在这里使用 R……
也许值得再问一个关于如何进行 PLYR 样式完全连接的问题?:)

于 2013-08-14T23:11:50.030 回答