大熊猫。按字段分组并将值合并到一行中

时间:2016-04-21 11:45:58

标签: python pandas

我想知道如何按字段对数据框进行分组,然后将组连接在一行中,优先考虑非空值。 这是一个按ID分组的示例:

enter image description here

2 个答案:

答案 0 :(得分:1)

我认为您可以replacegroupby使用sum

print df.replace('null', '').groupby('id').sum().replace('', 'null')
    A  B     C
id            
1   a  r     s
2   q  d  null
3   w  b  null

如果值null的类型不是string,请使用fillna

print df.fillna('').groupby('id').sum().replace('', 'null')
    A  B     C
id            
1   a  r     s
2   q  d  null
3   w  b  null

答案 1 :(得分:1)

设置

import pandas as pd

data = [
    [1, 'a', None, None],
    [1, None, 'r', None],
    [1, None, None, 's'],
    [2, None, 'd', None],
    [2, 'q', None, None],
    [3, None, 'b', None],
    [3, 'w', None, None]
]

df = pd.DataFrame(data, columns=['id', 'A', 'B', 'C'])

df看起来像

   id     A     B     C
0   1     a  None  None
1   1  None     r  None
2   1  None  None     s
3   2  None     d  None
4   2     q  None  None
5   3  None     b  None
6   3     w  None  None

解决方案

df.set_index('id').stack().unstack()

看起来像

    A  B     C
id            
1   a  r     s
2   q  d  None
3   w  b  None