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)