gpt4 book ai didi

Python numpy dataframe 跨两个数据帧的条件运算(例如求和)

转载 作者:行者123 更新时间:2023-12-02 01:24:54 26 4
gpt4 key购买 nike

我正在尝试计算涉及另一个数据帧中查找的条件总和。

import pandas as pd
first = pd.DataFrame([{"a": "aaa", "b": 2, "c": "bla", "d": 1}, {"a": "bbb", "b": 3, "c": "bla", "d": 1}, {"a": "aaa", "b": 4, "c": "bla", "d": 1}, {"a": "ccc", "b": 11, "c": "bla", "d": 1}, {"a": "bbb", "b": 23, "c": "bla", "d": 1}])
second = pd.DataFrame([{"a": "aaa", "val": 111}, {"a": "bbb", "val": 222}, {"a": "ccc", "val": 333}, {"a": "ddd", "val": 444}])

print(first)
print(second)

这两个 DataFrame 是

     a   b    c  d
0 aaa 2 bla 1
1 bbb 3 bla 1
2 aaa 4 bla 1
3 ccc 11 bla 1
4 bbb 23 bla 1

     a  val
0 aaa 111
1 bbb 222
2 ccc 333
3 ddd 444

我想在 second 中追加一列,该列具有 firstb 列的总和,其中 first.a 匹配相应的 second.a。预期结果是:

     a  val result
0 aaa 111 6
1 bbb 222 26
2 ccc 333 11
3 ddd 444 0

请注意,这是一个最小的示例,我希望看到一个使用 lambda 或其他函数的通用解决方案,而不是适用于此特定示例的特定 hack。

最佳答案

您可以使用pandas.DataFrame.groupby然后使用 pandas.DataFrame.merge根据 groupby 的结果。

g = first.groupby('a')['b'].sum().rename('result')
result = second.merge(g, on='a', how='left').fillna(0)
print(result)

输出:

     a  val  result
0 aaa 111 6.0
1 bbb 222 26.0
2 ccc 333 11.0
3 ddd 444 0.0

关于Python numpy dataframe 跨两个数据帧的条件运算(例如求和),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74971337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com