2017-06-13 113 views
0

我在這個形式的數據:大熊貓打印數據幀中所需要的格式

Sample Cohort CName Intensity 
S1  a  C1  22.34 
S2  a  C2  17.34 

我想打印它以這種形式

Cohort Intensity1 Intensity2 
a  22.34  17.34 

請建議如何做到這一點。我是初學者在大熊貓

+0

您可以添加更多的行? 5-6很好。謝謝。 – jezrael

回答

0

我想你需要pivot

df = df.pivot(index='Cohort', columns='Sample', values='Intensity') 
print (df) 
Sample  S1  S2 
Cohort    
a  22.34 17.34 

或者:

df = df.pivot(index='Cohort', columns='CName', values='Intensity') 
print (df) 
CName  C1  C2 
Cohort    
a  22.34 17.34 

而且最後:

df.columns = ['Intensity' + str(x + 1) for x in np.arange(len(df.columns))] 
print (df) 
     Intensity1 Intensity2 
Cohort       
a   22.34  17.34 

但也許需要:

print (df) 
    Sample Cohort CName Intensity 
0  S1  a C1  22.34 
1  S2  a C2  17.34 
2  S1  b C1  20.00 
3  S1  b C1  10.00 

df['g'] = df.groupby('Cohort').cumcount() 
df = df.pivot(index='Cohort', columns='g', values='Intensity') 
print (df) 
g   0  1 
Cohort    
a  22.34 17.34 
b  20.00 10.00 

是一樣的:

df = pd.pivot(index=df['Cohort'], 
       columns=df.groupby('Cohort').cumcount(), 
       values=df['Intensity']) 
print (df) 
      0  1 
Cohort    
a  22.34 17.34 
b  20.00 10.00 

備選:

df['g'] = df.groupby('Cohort').cumcount() 
df = df.set_index(['Cohort', 'g'])['Intensity'].unstack(fill_value=0) 
print (df) 
g   0  1 
Cohort    
a  22.34 17.34 
b  20.00 10.00