gpt4 book ai didi

python - python pandas或Filter中的管道或函数序列然后汇总(如dplyr)

转载 作者:行者123 更新时间:2023-12-04 01:12:30 31 4
gpt4 key购买 nike

语境化。我是 R 重度用户,但目前在 python(使用 Pandas )之间切换。假设我有这个数据框

data = {'participant': ['p1','p1','p2','p3'],
'metadata': ['congruent_1','congruent_2','incongruent_1','incongruent_2'],
'reaction': [22000,25000,27000,35000]
}

df_s1 = pd.DataFrame(data, columns = ['participant','metadata', 'reaction'])
df_s1 = df_s1.append([df_s1]*15,ignore_index=True)
df_s1
我想通过以下方式重现我可以在 R(管道函数)中轻松完成的操作:
df_s1[(df_s1.metadata == "congruent_1") | (df_s1.metadata == "incongruent_1")].df_s1["reaction"].mean()
这不可能。当我将此代码拆分为部分/变量时,我才能成功:
x = df_s1[(df_s1.metadata == "congruent_1") | (df_s1.metadata == "incongruent_1")]
x = x["reaction"].mean()
x
以 dplyr 的方式,我会去
ds_s1 %>% 
filter(metadata == "congruent_1" | metadata == "incongruent_1") %>%
summarise(mean(reaction))
注意:我非常感谢对一个站点的简洁引用,我可以在其中将我的 R 代码转换为 Python。有多种文献可供使用,但格式混合且风格灵活。
谢谢

最佳答案

我们有 .loc这里

df_s1.loc[(df_s1.metadata == "congruent_1") | (df_s1.metadata == "incongruent_1"), 'reaction'].mean()
Out[117]: 24500.0
更改为 isin正如 Quang 提到的,尽量减少代码行

在基础 R
mean(ds_s1$reaction[ds_s1$metadata%in%c('congruent_1','incongruent_1')])

关于python - python pandas或Filter中的管道或函数序列然后汇总(如dplyr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64390894/

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