【发布时间】:2013-08-17 02:07:33
【问题描述】:
问题描述:我有两个数据框(“Train”和“Test”),列几乎相同(“Test”有两个变量未出现在 Train 中,Train 有一个变量未出现在 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 中删除,我没有问题),或者提出另一种更改方式列名。
非常感谢任何帮助。
【问题讨论】:
-
我想也许罪孽正在改变你正在迭代的东西,同时迭代它,总是一个危险的游戏。但是我无法在 0.12 中重现这一点(您使用的是哪个版本的熊猫?)。
-
您能否发布一个示例来演示此问题,即使用一些虚拟数据?大概只有一行(但有你的列)的 DataFrames 足以显示这种行为? (它可能通过升级修复,但我不确定。)