Panadas-基于第一列的分组的每一列的总和
我有这个文本文件,其中包含表和其他3列,分别指示选择,更新和插入。我想按表格分组,每列的总计和末尾的总计。
df=data.groupby(['Table'])
print df.groupby(['Table'])["Select","Update","Insert"].agg('sum')
Text file has data in this format
Table Select Update Insert
A 10 8 5
B 12 2 0
C 10 2 4
B 19 3 1
D 13 0 5
A 11 7 3
Expected output
Table Select Update Insert
A 21 15 8
B 31 5 1
C 10 2 4
D 13 0 5
Total 75 22 18
带有sum的df.groupby不能正确汇总每一列的数据。如果聚合仅在一个列上完成,那很好,但是我终端上的输出被弄乱了。
感谢您的帮助!
答案 0 :(得分:1)
您可以尝试:df.groupby(by='Table').sum()
用于汇总表:
Select Update Insert
Table
A 21 15 8
B 31 5 1
C 10 2 4
D 13 0 5
总计为df.groupby(by='Table').sum().sum()
:
Select 75
Update 22
Insert 18
dtype: int64
答案 1 :(得分:1)
您可以尝试使用带有边距= True的熊猫“ pivot_table”功能
data={'Table':['A','B','C','B','D','A'],'Select':[10,12,10,19,13,11],'Update':[8,2,2,3,0,7],'Insert':[5,0,4,1,5,3]}
df =pd.DataFrame(data)
df2 =df.pivot_table(index ='Table',
margins=True,
margins_name='Total', # defaults to 'All'
aggfunc=sum)
df2.reset_index(inplace =True)
df2[['Table','Select','Update','Insert']]
您将获得所需的输出:
Table Select Update Insert
0 A 21 15 8
1 B 31 5 1
2 C 10 2 4
3 D 13 0 5
4 Total 75 22 18
希望这会有所帮助!
答案 2 :(得分:0)
Table ...
A 10 8 5 0.0 ... 0.0
A 11 7 3 0.0 ... 0.0
B 12 2 0 0.0 ... 0.0
B 19 3 1 0.0 ... 0.0
C 10 2 4 0.0 ... 0.0
D 13 0 5 0.0 ... 0.0
Table Select Update Insert 0.0 ... 0.0
[7 rows x 3 columns]
这是我通过df.groupby(by='Table').sum()
获得的输出
答案 3 :(得分:0)
看来,从.log文件加载数据时,熊猫无法正确处理数据
这是如何加载数据
df=pd.DataFrame(data)
print df
Output of frame I get,
Table ... Insert
0 Table Select Update Insert ... NaN
1 A 10 8 5 ... NaN
2 B 12 2 0 ... NaN
3 C 10 2 4 ... NaN
4 B 19 3 1 ... NaN
5 D 13 0 5 ... NaN
6 A 11 7 3 ... NaN
versus
when I load in data frame using below,
data={'Table':['A','B','C','B','D','A'],'Select':[10,12,10,19,13,11],'Update':[8,2,2,3,0,7],'Insert':[5,0,4,1,5,3]}
output of print df is
{'Table': ['A', 'B', 'C', 'B', 'D', 'A'], 'Update': [8, 2, 2, 3, 0, 7], 'Select': [10, 12, 10, 19, 13, 11], 'Insert': [5, 0, 4, 1, 5, 3]}
and pivot_table provides the output as expected.
jitesh singla:如果您不介意,能否在Table列上提供有关ivot_table如何与group by一起使用以及如何汇总其他列的数据的详细信息。