【发布时间】:2022-01-18 03:52:53
【问题描述】:
可能是重复的,但我花了太多时间在这上面,现在谷歌搜索没有任何运气。假设我有一个数据框:
import pandas as pd
data = {"letters": ["a", "a", "a", "b", "b", "b"],
"boolean": [True, True, True, True, True, False],
"numbers": [1, 2, 3, 1, 2, 3]}
df = pd.DataFrame(data)
df
我想 1) 按字母分组,2) 如果布尔值中的所有值都具有相同的值,则取数字的平均值。在 R 中我会写:
library(dplyr)
df %>%
group_by(letters) %>%
mutate(
condition = n_distinct(boolean) == 1,
numbers = ifelse(condition, mean(numbers), numbers)
) %>%
select(-condition)
这将导致以下输出:
# A tibble: 6 x 3
# Groups: letters [2]
letters boolean numbers
<chr> <lgl> <dbl>
1 a TRUE 2
2 a TRUE 2
3 a TRUE 2
4 b TRUE 1
5 b TRUE 2
6 b FALSE 3
你会如何使用 Python pandas 做到这一点?
【问题讨论】:
-
SO 并不是一个代码翻译服务。除了你的研究,你还尝试过什么?