上下文:
我的数据帧列是A
中的ID(带有重复项)、时间值B
和字符串值C
我需要更新所有的C
值,其中C
对应于每个ID A
的最近时间B
显示ID(或ID组)的最新时间,但不包括C值:
df.groupby(['A'], as_index=False)['B'].max()
我在跌跌撞撞到.transform()
后的尝试失败:
df['C'] = df.groupby('A')['B'].transform(['C'].max())
AttributeError: 'list' object has no attribute 'max'
数据
'a':['zx5','zx5','ab1','ab1','mn3','mn3'],
'b':['1/1/2021','1/2/2021','1/3/2021','1/4/2021','1/5/2021','1/4/2021'],
'c':['aaa','bbb','ccc','ddd','eee','fff']
所需结果:
'a':['zx5','zx5','ab1','ab1','mn3','mn3'],
'b':['1/1/2021','1/2/2021','1/3/2021','1/4/2021','1/5/2021','1/4/2021'],
'c':['bbb','bbb','ddd','ddd','eee','eee']
如果适用,我正在寻找一个有效的解决方案,因为它由包含100000多行数据的csv组成
编辑: 由于注释,我更新了IDS(A),使其不那么简单,将它们视为随机的字母数字值,排序不提供好处
我们可以转换} (如果还没有)(为了正确的排序行为),然后^{} ,以便最大的} 最后一个,并让索引对齐正确地关联这些值:
b
^{b
值是最后一个,然后^{df
:通过
%timeit
的一些定时:您可以按“a”+“b”排序,保留每个“a”组的最新“b”,并使用它映射新列“c”数据:
输出:
相关问题 更多 >
编程相关推荐