将map lambda转换为列表理解

时间:2018-07-30 08:57:57

标签: python list pandas list-comprehension iterable

对于...

import pandas as pd
df = pd.DataFrame({'a': 1, 'b': range(4)})

def sumthis(a, b):
    return a+b

df['sum'] = list(map(lambda x, y: sumthis(x, y), [i for i in df.a], [j for j in df.b]))

...列表理解是什么?

list(map(lambda x, y: sumthis(x, y), [i for i in df.a], [j for j in df.b]))

2 个答案:

答案 0 :(得分:2)

这里的列表理解是不必要的。熊猫系列对象是可迭代的,不需要列表转换。此外,通过理解将系列转换为列表的效率很低。为了说明后一点,您可以更有效地使用pd.Series.tolist

df['sum'] = list(map(lambda x, y: sumthis(x, y), df['a'].tolist(), df['b'].tolist()))

相反,您可以使用单个列表理解:

df['sum'] = [sumthis(a, b) for a, b in zip(df['a'], df['b'])]

但是,在可能的情况下,您应该更喜欢向量化操作,以利用底层的NumPy数组。在这种琐碎的情况下:

df['sum'] = df['a'] + df['b']

答案 1 :(得分:1)

使用<activity android:name=".MainActivity" android:screenOrientation="portrait"/>

zip