获取Pandas中共享唯一标识符的一系列行中的单元格的最新值

时间:2015-11-13 15:21:31

标签: python mysql pandas

我有一个独特的问题,我有一个充满数据的文件。然后,在行具有相同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

1 个答案:

答案 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