2017-07-26 70 views
1

我想分割喬布斯史蒂夫。 01/31專欄,因此[SPGC-9456,6.0]]在自己的行上。將重複值插入熊貓行

什麼現在我的代碼輸出:

           2017-01-31   2017-02-01 
    Gates, Bill.        [[SPGC-14075, 0.5]]   NaN 
    Jobs, Steve.   [[SPGC-14075, 3.5], [SPGC-9456, 6.0]]   NaN 
    White, John ANDERSON. [[SPGC-14075, 1.75]]    [[SPGC-9456, 1.75]] 

我想要什麼:

          2017-01-31   2017-02-01 
Gates, Bill.        [[SPGC-14075, 0.5]]   NaN 
Jobs, Steve.       [[SPGC-14075, 3.5]   NaN 
Jobs, Steve.        [SPGC-9456, 6.0]]   NaN     
White, John ANDERSON.     [[SPGC-14075, 1.75]] [[SPGC-9456, 1.75]] 
+0

您正在尋找'unnest'〜 – Wen

回答

2
col = '2017-01-31' 
v = df[col].values.tolist() 
l = [len(x) for x in v] 
d = {col: [[x] for y in v for x in y]} 
df.reindex(df.index.repeat(l)).assign(**d) 

           2017-01-31   2017-02-01 
Gates, Bill.   [[SPGC-14075, 0.5]]     NaN 
Jobs, Steve.   [[SPGC-14075, 3.5]]     NaN 
Jobs, Steve.    [[SPGC-9456, 6.0]]     NaN 
White, John ANDERSON. [[SPGC-14075, 1.75]] [[SPGC-9456, 1.75]] 

設置

df = pd.DataFrame([ 
     [[['SPGC-14075', .5]], np.nan], 
     [[['SPGC-14075', 3.5], ['SPGC-9456', 6.]], np.nan], 
     [[['SPGC-14075', 1.75]], [['SPGC-9456', 1.75]]] 
    ], 
    'Gates, Bill.|Jobs, Steve.|White, John ANDERSON.'.split('|'), 
    ['2017-01-31', '2017-02-01'] 
) 
+0

更好的比我的解決辦法〜!! + 1 – Wen

+0

看起來不錯。有什麼辦法可以讓那些SPGC-#條目作爲列的標題,或者我需要先更改我的設置嗎?這一切都來自一個叫做day_dict的字典。即。 dataframe = pd.dataframe(day_dict) – jenkelblankel

+1

@jenkelblankel你可以做的最好的事情是問一個不同的問題,並清楚地表明你的出發點是什麼,提供代碼來創建起點,並顯示你希望看到的是什麼你的結果。由於我不確定你的意思,所以很難回答你的問題。你可以花時間再問一個好問題來糾正這個問題。你可能會得到更多的代表( - : – piRSquared

1

我不使用你的數據,你可以用我的臨時數據試試。

Temp=pd.DataFrame({'Index':['str1', 'str2', 'str3'],'va':[['x'],[['y'],['z']],['z']],'va2':[np.nan,np.nan,['YY']]}).set_index('Index') 
Temp_unnest = pd.DataFrame([[i, x] 
       for i, y in Temp['va'].apply(list).iteritems() 
        for x in y], columns=list('IV')) 
Temp_unnest['va2']=Temp_unnest.I.map(Temp.va2) 
Temp_unnest.set_index('I',inplace=True) 
Temp_unnest.columns=Temp.columns 

Temp_unnest 
Out[121]: 
     va va2 
I    
str1 x NaN 
str2 [y] NaN 
str2 [z] NaN 
str3 z [YY]