【发布时间】:2019-03-07 13:15:14
【问题描述】:
这只是一个挑剔的句法问题......
我有一个数据框,我想使用列表推导来评估使用大量列的函数。
我知道我能做到
df['result_col'] = [some_func(*var) for var in zip(df['col_1'], df['col_2'],... ,df['col_n'])]
我想做这样的事情
df['result_col'] = [some_func(*var) for var in zip(df[['col_1', 'col_2',... ,'col_n']])]
即不必写dfn 次。我一辈子都搞不懂语法。
【问题讨论】:
-
试试这个
df['result_col'] = [some_func(*var) for var in zip(*df[col for col in ['col_1', 'col_2',... ,'col_n']])]? -
你为什么不直接使用 apply:
df['reult_col'] = df.apply(lambda x: some_func(*tuple(x.values)), axis=1)? -
@cryptonome 似乎是某处的语法错误.. 缺少括号或括号?
-
@gyx-hh 我认为 apply 很慢。但老实说,我什至没有考虑过
-
@cryptonome
df['result_col'] = [some_func(*var) for var in zip(*[df[col] for col in ['col_1', 'col_2',... ,'col_n']])]工作。谢谢。如果您想为您的答案发表评论,请将其发布,我会将其标记为答案。
标签: python pandas zip list-comprehension columnname