2017-07-26 66 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]