python - pandas - 对 DataFrame 列中的对象求和并与 DataFrame 连接

标签 python pandas

我有一个像这样的数据框:

d = {'buy': Series([1., 0., 1., 0., 1., 1., 0., 0., 1., 1., 1., 0., 1., 0.]),
'id': Series([1., 2., 4., 2., 3., 4., 1., 1., 2., 1., 3., 3., 2., 3.]), 'datetime': Series(['01.02.2015',
'01.02.2015', '01.03.2015', '03.01.2015', '06.02.2015', '01.09.2015', '18.03.2015', '02.02.2015', '03.02.2015',
'06.04.2015', '01.04.2015', '03.04.2015', '02.04.2015', '20.03.2015'])}

df = DataFrame(d)
print(df)

    buy    datetime  id
0     1  01.02.2015   1
1     0  01.02.2015   2
2     1  01.03.2015   4
3     0  03.01.2015   2
4     0  06.02.2015   3
5     1  01.09.2015   4
6     0  18.03.2015   1
7     0  02.02.2015   1
8     1  03.02.2015   2
9     1  06.04.2015   1
10    1  01.04.2015   3
11    0  03.04.2015   3
12    1  02.04.2015   2
13    0  20.03.2015   3

首先,我按“id”对其进行分组,并仅从每个“id”接收最新的“日期时间”:

df1 = df.sort(columns=['datetime']).drop_duplicates(subset='id', take_last=True)
print(df1)

    buy    datetime  id
5     1  01.09.2015   4
8     1  03.02.2015   2
6     0  18.03.2015   1
13    0  20.03.2015   3

接下来我需要对每个 id 的“购买”进行求和,并将新列(我将其命名为 buy_count”)与我的 DataFrame 一起加入。我有这样的东西:

buys = df.groupby(by='id')['buy'].sum()

print(buys)

id
1    2
2    2
3    1
4    2

但我无法将“buy_count”插入到 DataFrame 中:

df1['buys_count'] = buys
print(df1)

    buy    datetime  id  buys_count
5     1  01.09.2015   4         NaN
8     1  03.02.2015   2         NaN
6     0  18.03.2015   1         NaN
13    0  20.03.2015   3         NaN

我猜索引有一些问题。尝试更改索引,尝试使用循环,但均不成功。我怎样才能得到这个?

最佳答案

您可以针对 df1 的“id”列调用 map 并传递 buys 来执行查找:

In [270]:
df1['buy_count'] = df1['id'].map(buys)
df1

Out[270]:
    buy    datetime  id  buy_count
5     1  01.09.2015   4          2
8     1  03.02.2015   2          2
6     0  18.03.2015   1          2
13    0  20.03.2015   3          2

顺便说一句,我没有得到与您相同的购买输出

关于python - pandas - 对 DataFrame 列中的对象求和并与 DataFrame 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32631445/

相关文章:

pandas - 被 pandas DataFrame memory_usage 和副本搞糊涂了

python - 如何使用 python 包 ete2 使用存储在列表中的字符串创建树?

python - 如何在 python 脚本中调用 sed 命令?

python - 检查某列是否包含其他列的值并填充第三列(True 或 False)

python - pd.to_datetime值错误: Given date string not likely a datetime

python - 循环一列并删除字符 - Python Pandas

python - 如何根据数据框中的条件更改行的值?

python - 在 python 中使用 Onnx 模型运行推理?

python - 在应用程序中实现聊天?

python - 为什么我们不需要在 Python 的函数中实际使用全局变量之前定义它们?