熊猫集团的串联问题

电子线

我有一个数据表,其中包含NAME,DATE,TYPE,VALUE A,VALUE B,VALUE C等。

从理论上讲,NAME,DATE,TYPE应该是唯一的,但事实证明它们不是唯一的,因此我需要弄清楚如何处理它。

输入示例:

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

我的目标是将VALUE A的值合并到JSON样式数组中,然后获取VALUE B和VALUE C的最后一个值。

我努力了:

data.groupby('NAME', 'DATE', 'TYPE').apply(lambda x: ','.join(set(x)))

但这合并了所有字段...。

有什么帮助吗?

pp

这似乎可行:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章