2017-08-29 61 views
0

我从网上看到的是编码,如:如何使用lambda删除熊猫数据框的列?

train_df = train_df.drop(['Ticket', 'Cabin'], axis=1) 
test_df = test_df.drop(['Ticket', 'Cabin'], axis=1) 

但我想让它更短,所以我尽量为如下代码:

train_df,test_df=lambda x:x.drop(['Ticket','Cabin'],axis=1) 

而我得到的错误:

TypeError: 'function' object is not iterable

我想知道是否可以像我的方式使用lambda或第一个编码已经是最好的?

+5

为什么不只是'对于df in(train_df,test_df):df.drop(['Ticket','Cabin'],axis = 1,inplace = True)' - 虽然它并不是真的更短... –

回答

0

因此,我可以看到想要这样的东西的逻辑。这是我想在这种情况下做的:

#put your dataframes into a tuple 
dfs = (train_df, test_df) 

可以是任何迭代真的,只是为了节省打字,如果你想更dataframes添加到过程

dfs = map(lambda x: x.drop(['Ticket','Cabin'], axis=1), dfs) 

这将正好做你希望。

注意,如果你在Python3,map是懒惰的,所以它会有点容易(和更Python一般)做:

dfs = [x.drop(['Ticket','Cabin'], axis=1) for x in dfs] 

为了完整性,原因你得到一个错误是因为右侧的:

train_df,test_df=lambda x:x.drop(['Ticket','Cabin'],axis=1) 

只是一个函数,而不是迭代你的数据框。

+0

这是pyhonic!帮助我解决问题。谢谢! –

+0

不客气。如果解决了您的问题,请随时接受/提出答案 –

相关问题