仅当第一行是其他下一行的子字符串时,才如何将DataFrame行与另一行平均

问题描述

我有一个名为“数据”的数据框:

USER    VALUE
XOXO      21
ABC-1      2
ABC-1B     4
ABC-2      4
ABC-2B     6
PEPE      12

我想使用第一个USER名称将'ABC-1'与'ABC-1B'合并为一行,然后将这两个值取平均值以得出:

USER    VALUE
XOXO      21
ABC-1      3
ABC-2      5
PEPE      12

数据帧可能不整齐,并且其中还有其他不需要平均值的无关紧要的值。我只想对“ XXX-XB”在“ XXX-XB”中的两行取平均值

data = pd.DataFrame({'USER':['XOXO','ABC-1','ABC-1B','ABC-2','ABC-2B','PEPE'],'VALUE':[21,2,4,6,12]})

解决方法

尝试一下,

df.USER = df.USER.str.replace('(-\d)B',r"\1")
df = df.groupby("USER",as_index=False,sort=False).VALUE.mean()

print(df)

    USER  VALUE
0   XOXO     21
1  ABC-1      3
2  ABC-2      5
3   PEPE     12