Python lambda for循环两次,TypeError:'generator'对象不可调用

时间:2016-12-18 06:34:52

标签: python pandas

我有一个pandas DataFrame,我想在A列中组合两个元素。

样品:

my_df = pd.DataFrame({'A':[['aa','ab','ac'],['ba','bb','bc','bd']]})
my_df

    A
0   [aa, ab, ac]
1   [ba, bb, bc, bd]

我想要这个输出:

    A                   B
0   [aa, ab, ac]        [[aa, ab], [ab, ac]]
1   [ba, bb, bc, bd]    [[ba, bb], [bb, bc], [bc,bd]]

我使用lambda和for循环两次,但TypeError: 'generator' object is not callable出现。需要帮助。

my_df['B'] = np.nan
my_df['B'] = my_df['B'].apply(lambda x: [my_df['A'][i][m],my_df['A'][i][m+1]] \
                                                     for i in range(0,len(my_df['A'])) \
                                                     for m in range(0,len(my_df['A'][i])-1))

1 个答案:

答案 0 :(得分:1)

你可以这样做:

my_df['B'] = my_df.A.apply(lambda x: list(zip(x[:-1], x[1:])))
my_df

enter image description here

获取列表而不是元组列表:

my_df['B'] = my_df.A.apply(lambda x: list(map(list, zip(x[:-1], x[1:]))))
my_df

enter image description here