2016-12-18 18 views
0

我有一個數據幀熊貓,我想在列A的Python拉姆達for循環兩次,類型錯誤:「發生器」對象不是可調用發生

樣品兩個元件結合:

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

你可以做這樣的事情,而不是:

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

相關問題