我有一个独特的问题,我有一个充满数据的文件。然后,在行具有相同ID的情况下,使用Pandas将数据汇总在一起。每行中的数据是变化的,但行中的大多数字符串都是静态的,文件中的整数使用Pandas加在一起:
<div class="container-fluid" ng-repeat="grid in grids">
<div ui-grid="grid" ui-grid-exporter></div>
</div>
但是,我最近了解到,特别是一个值必须在汇总时设置为最新值,换句话说,共享相同ID的最后一行的值。如果没有文件解析杂技,有没有熊猫的方法呢?
更新 因此,作为该表的一个例子,它的&#39;格式为:
aframe.columns = ['ID','blah2', 'blah3', 'integer1'.......]
aframe['integer1'] = aframe['integer1'].convert_objects(convert_numeric='force')
aframe['integer2'] = aframe['integer2'].convert_objects(convert_numeric='force')
aframe['integer3'] = aframe['integer3'].convert_objects(convert_numeric='force')
aframe['integer4'] = aframe['integer4'].convert_objects(convert_numeric='force')
aframe = aframe.groupby(['ID', 'blah1', 'blah2',......])
aframe.to_csv(outputFile)
我希望它像这样总结在一起,Blah2的最后一个值是求和行中该单元格的值:
ID Blah2 Blah3 Integer1 ....
A On Name 34
B Off Name2 76
A Off Name 34
B On Name2 23
答案 0 :(得分:1)
您可以使用groupby('ID')
后跟aggregate
每列指定的功能:
import pandas as pd
data = [['A', 'On', 34],
['B', 'Off', 76],
['A', 'Off', 34],
['B', 'On', 23]]
df = pd.DataFrame(columns=('ID', 'Blah', 'Integer'), data=data)
df
>>> ID Blah Integer
>>> 0 A On 34
>>> 1 B Off 76
>>> 2 A Off 34
>>> 3 B On 23
df.groupby('ID').aggregate({'Blah': 'last', 'Integer': 'mean'})
>>> Blah Integer
>>> ID
>>> A Off 34.0
>>> B On 49.5