【发布时间】:2020-12-16 20:13:12
【问题描述】:
我有一个名为“数据”的数据框:
USER VALUE VALUE2
0 XOXO 21 AAA
1 ABC-1 2 BBB
2 ABC-1B 4 CCC
3 ABC-2 4 DDD
4 ABC-2B 6 EEE
5 PEPE 12 FFF
我通过一些代码运行它来组合相似的名称:
data = pd.DataFrame({'USER':['XOXO','ABC-1','ABC-1B','ABC-2','ABC-2B', 'PEPE'], 'VALUE':[21,2,4,4,6,12], 'VALUE2':['AAA','BBB','CCC','DDD','EEE', 'FFF']})
data.USER = data.USER.str.replace('(-\d)B', r"\1")
data = data.groupby('USER', as_index=False, sort=False).VALUE.mean()
但是我最终得到了一个像这样的数据框,其中 VALUE2 被丢弃:
USER VALUE
0 XOXO 21
1 ABC-1 3
2 ABC-2 5
3 PEPE 12
如何修改代码以通过保留原始 USER 的 VALUE2 来保留 VALUE2?所以用户'ABC-1'的VALUE2将保留'BBB'和'ABC-2'的'DDD'
USER VALUE VALUE2
0 XOXO 21 AAA
1 ABC-1 3 BBB
2 ABC-2 5 DDD
3 PEPE 12 FFF
【问题讨论】:
-
聚合
VALUE和VALUE2first -
您如何决定是否为用户
ABC-1使用BBB而不是CCC? -
Groupby
USER剥离尾随B以获得VALUE的平均值。布尔选择的适当组合应该消除不受欢迎的VALUE2。见下文 -
@stackoverflow 这有帮助吗? :-)?