Python 分组连接问题

Python 分组连接问题,python,pandas,Python,Pandas,我有一个包含 名称、日期、类型、值A、值B、值C等 理论上,名称、日期和类型应该是唯一的,但事实证明它们不是唯一的,所以我需要弄清楚如何处理它 输入示例: Bob, 1/1/18, AType, blah, test, test2 Bob, 1/1/18, AType, blah2, test, test2 Bob, 1/1/18, BType, blah, test, test2 理想输出 Bob, 1/1/18, AType, [blah,blah2], test, test2 Bob,

我有一个包含 名称、日期、类型、值A、值B、值C等

理论上,名称、日期和类型应该是唯一的,但事实证明它们不是唯一的,所以我需要弄清楚如何处理它

输入示例:

Bob, 1/1/18, AType, blah, test, test2
Bob, 1/1/18, AType, blah2, test, test2
Bob, 1/1/18, BType, blah, test, test2
理想输出

Bob, 1/1/18, AType, [blah,blah2], test, test2
Bob, 1/1/18, BType, blah, test, test2
我的目标是将值A合并到一个JSON样式的数组中,然后取最后一个值作为值B和值C

我试过:

data.groupby('NAME', 'DATE', 'TYPE').apply(lambda x: ','.join(set(x)))
但这合并了所有的字段。。。。或者似乎是

有什么帮助吗?

这似乎有效:

import pandas as pd

df = pd.DataFrame([['Bob', '1/1/18', 'AType', 'blah', 'test', 'test2'],
                   ['Bob', '1/1/18', 'AType', 'blah2', 'test', 'test3'],
                   ['Bob', '1/1/18', 'BType', 'blah', 'test', 'test2']],
                  columns=['NAME', 'DATE', 'TYPE', 'VALUE A', 'VALUE B', 'VALUE C'])

f = {'VALUE A': lambda x: set(x), 'VALUE B': 'last', 'VALUE C': 'last'}

df = df.groupby(['NAME', 'DATE', 'TYPE'])['VALUE A', 'VALUE B', 'VALUE C']\
       .agg(f).reset_index()
df['VALUE A'] = df['VALUE A'].map(list)

#   NAME    DATE   TYPE        VALUE A VALUE B VALUE C
# 0  Bob  1/1/18  AType  [blah2, blah]    test   test3
# 1  Bob  1/1/18  BType         [blah]    test   test2

为什么第一行的输出不是,
…,类型是,[blah,blah2],[test,test],[test2,test2]
?我猜是因为复制品?但是
blah2
在某种程度上是否总是类似于
blah
?因为我只想保留值A的多个值,所以我只想保留值B和值C的最后一个值,即使有多个值。问题是,它还按其他值分组,我不想这样做。我只想取最后一个值中的值来表示值B和值C。@user3507901。对不起,我不明白。您能否提供一个输入/输出示例来演示我的解决方案何时中断,因为它似乎与您预期的输出相匹配?请在第二个AType中将test2更改为test3。。。它会产生三个结果,但只会产生2个。太棒了!。。。谢谢