Python 使用pandas和

Python 使用pandas和,python,numpy,pandas,pivot-table,data-analysis,Python,Numpy,Pandas,Pivot Table,Data Analysis,我用蟒蛇,熊猫,小熊 df = pd.read_csv('data.csv') print df.head(7) 我有数据帧: name day sum A D1 6 B D1 7 B D3 8 A D10 3 A D2 4 C D2 6 A D1 9 我需要: name D1 D2 D3 ... D10 A =6+9 =6+9

我用蟒蛇,熊猫,小熊

df = pd.read_csv('data.csv')
print df.head(7)
我有数据帧:

name  day  sum
A      D1    6 
B      D1    7 
B      D3    8 
A      D10   3 
A      D2    4 
C      D2    6 
A      D1    9
我需要:

name   D1    D2      D3     ... D10
A      =6+9  =6+9+4  =6+9+4    =6+9+4+...+3
B      =7    =7      =7+8      =7+8+...+ 
C      =0    =0+6    =0+6        =6+...
我需要得到下表中的累计总数:

name   D1    D2     D3    ... D10
A      15    19     19       ....
B      7     7      15      
C      0     6      6        
请告诉我怎么做? 谢谢大家!

p、 我使用函数透视表(但结果不是累计总数):


pivot
ing加上
sum
,然后再加上
fillna
,实际上完全符合您在问题中指定的要求:

In [18]: df
Out[18]: 
  name  day  sum
0    A   D1    6
1    B   D1    7
2    B   D3    8
3    A  D10    3
4    A   D2    4
5    C   D2    6
6    A   D1    9

In [19]: pd.pivot_table(df, values='sum', index=['name'], columns=    ['day'], aggfunc=sum).fillna(0)
Out[19]: 
day     D1  D10   D2   D3
name                     
A     15.0  3.0  4.0  0.0
B      7.0  0.0  0.0  8.0
C      0.0  0.0  6.0  0.0

例如,15.0=6+9,与您指定的完全一致。

枢轴
使用
总和
,后跟
填充na
,实际上完全符合您在问题中指定的要求:

In [18]: df
Out[18]: 
  name  day  sum
0    A   D1    6
1    B   D1    7
2    B   D3    8
3    A  D10    3
4    A   D2    4
5    C   D2    6
6    A   D1    9

In [19]: pd.pivot_table(df, values='sum', index=['name'], columns=    ['day'], aggfunc=sum).fillna(0)
Out[19]: 
day     D1  D10   D2   D3
name                     
A     15.0  3.0  4.0  0.0
B      7.0  0.0  0.0  8.0
C      0.0  0.0  6.0  0.0
例如,15.0=6+9,与您指定的完全一致。

使用df.cumsum(axis=1)

使用df.cumsum(轴=1)

pivotedDf = pd.pivot_table(df, values='sum', index=['name'], columns=['day'], aggfunc=np.sum)
pivotedDf = pivotedDf[['D1', 'D2', 'D3', 'D10']]  # manually sort columns
pivotedDf.cumsum(axis=1)