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

2024-10-05 14:23:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个独特的问题,我有一个充满数据的文件。如果行具有相同的ID,则使用Pandas将这些数据相加。每行中的数据不同,但行中的大多数字符串是静态的,文件中的整数使用Pandas相加:

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)

但是,我最近了解到,当一个值加在一起时,必须将其设置为最新的值,换句话说,就是共享同一ID的最后一行的值。有没有一种方法可以在不执行文件解析杂技的情况下实现这一点?你知道吗

更新: 因此,作为表格的一个例子,它的'格式为:

ID Blah2 Blah3 Integer1 ....
A   On    Name   34
B   Off   Name2  76
A   Off   Name   34
B   On    Name2  23

我希望它像这样求和,Blah2的最后一个值是求和行中该单元格的值:

ID Blah2 Blah3 Integer1 ....
A   Off    Name   68
B   On     Name2  99

Tags: 文件数据nameidconvertpandasobjectson
1条回答
网友
1楼 · 发布于 2024-10-05 14:23:30

对于每列指定的函数,可以使用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

相关问题 更多 >