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

How to average DataFrame row with another row only if the first row is a substring of other next row

我有一个名为 'data' 的数据框:

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-X' 在 'XXX-XB'

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

我们来试试,

df.USER = df.USER.str.replace('(-\d)B', r"")
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