如何将多行合并为一行,同时在Pandas的某些列中添加特定值?

时间:2019-08-19 19:09:40

标签: python pandas dataframe

这是交易数据的一部分,正在处理Python(熊猫)以进行分类工作。 每个客户的Customer_ID都是唯一的,每笔交易的“输入时间”都是唯一的,任何客户在一段时间内都会进行多次交易。 大多数交易重复两次或更多次,具体取决于与一个交易关联的标签数量(但通常为2至4个标签)。 我想将一笔交易的多个条目仅合并为1行,并带有1个customer_ID,一个性别,年龄,输入时间和所有Tag属性。

snippet of data

我尝试按customer_id和输入日期分组,但是没有得到想要的结果。

例如,customer_ID:5519707在2019-04-27 16:07:05 + 00:00仅有一笔交易有四个条目。 example

我要用1行替换这4行,如下所示: expected result

那么有效的方法是什么?因为我的数据集有250万行和30多个属性,总大小为700MB。

2 个答案:

答案 0 :(得分:0)

如果要考虑“标签”列,以下是一种有效的方法。


df1 = pd.DataFrame({"an":["j","j","j","k","k"], "bn":[0,1,1,0,1], "cn":[2,1,2,3,1]})
df1.groupby(["an"])["bn", "cn"].sum().reset_index()

输入:

    an  bn  cn
0   j   0   2
1   j   1   1
2   j   1   2
3   k   0   3
4   k   1   1  

输出:

    an  bn  cn
0   j   2   5
1   k   1   4

答案 1 :(得分:0)

尝试一下:

df.groupby(['id']).max().reset_index()

输入

    id  gender  age tag1 tag2
0   200 male    20  0    1
1   200 male    20  1    0
2   200 male    20  0    0

输出

     id gender  age tag1 tag2
0   200 male    20  1    1