2015-12-14 56 views
1

我的數據位於數據框中。它看起來像這樣。轉換數據框 - Python

enter image description here

我試圖將數據幀轉換成以下格式:

enter image description here

目前我使用的是下面的Python代碼,這是繁瑣做這種轉換。

def f(row): 
    if row['d1'] == 1: 
     return 1 
    if row['d1'] == 2: 
     return '' 
    if row['d1'] == 3: 
     return '' 
    if row['d1'] == 4: 
     return '' 
    else: 
     return '' 
    return np.nan 

df['t1']=df.apply(f, axis=1) 

任何幫助將不勝感激。

+0

帕德里克,我編輯我的職務。這是你需要的嗎? – kevin

+0

嗨凱文, 你能解釋一下df ['t1'] = df.apply(f,axis = 1)是做什麼的嗎? –

+0

它讀取d1列中的值並在t1列中插入「1」(如果d1中的值爲1)。我的代碼很差。這就是爲什麼我在尋找更好的代碼。 – kevin

回答

4

您可以應用以下功能:

def func(x): 
    x.iloc[x.iloc[0]] = 1 
    return x 

In [66]: df 
Out[66]: 
    d1 t1 t2 t3 t4 t5 
0 5 0 0 0 0 0 
1 1 0 0 0 0 0 
2 3 0 0 0 0 0 
3 4 0 0 0 0 0 
4 1 0 0 0 0 0 
5 2 0 0 0 0 0 

In [67]: df.apply(func, axis=1) 
Out[67]: 
    d1 t1 t2 t3 t4 t5 
0 5 0 0 0 0 1 
1 1 1 0 0 0 0 
2 3 0 0 1 0 0 
3 4 0 0 0 1 0 
4 1 1 0 0 0 0 
5 2 0 1 0 0 0 
+0

你太棒了!非常感謝! – kevin

+0

我很高興能夠提供幫助 –