python - 将函数应用于分组数据帧并将多个输出保存到数据帧中
问题描述
我有一个看起来像这样的数据框:
X Z participantNum obsScenario startPos targetPos
16000 -16.0 -5.0 6950203 2 2 3
16001 -16.0 -5.0 6950203 2 2 3
16002 -16.0 -5.0 6950203 2 2 3
16003 -16.0 -5.0 6950203 2 2 3
16004 -16.0 -5.0 6950203 2 2 3
16005 -16.0 -5.0 6950203 2 2 3
16006 -16.0 -5.0 6950203 2 2 3
16007 -16.0 -5.0 6950203 2 2 3
16008 -16.0 -5.0 6950203 2 2 3
16009 -16.0 -5.0 6950203 2 2 3
我正在尝试将函数应用于返回 3 个输出的“X”和“Z”列。我想将这些输出保存到数据框中。我需要将函数应用于分组数据框。
我尝试了几种方法,使用这样的方法:
def mean_confidence_interval(data, confidence=0.95):
a = 1.0*np.array(data)
n = len(a)
m, se = np.mean(a), scipy.stats.sem(a)
h = se * scp.stats.t._ppf((1+confidence)/2., n-1)
return m, m+h, m-h
allDataF['mean_ci'] = allDataF.groupby(['obsScenario', 'startPos', 'targetPos'])['X', 'Z'].apply(mean_confidence_interval)
但我收到一个错误:TypeError:插入列的索引与框架索引不兼容
解决方案
您可以使用:
mean_ci = df.groupby(['obsScenario', 'startPos', 'targetPos'])['X'].apply(mean_confidence_interval)
df.join(mean_ci.rename('mean_ci'),
on = ['obsScenario', 'startPos', 'targetPos'])
与具有索引mean_ci
的系列一样['obsScenario', 'startPos', 'targetPos']
,您不能将值分配给索引为的orgin allDataF 16000 ~ 16009
。
推荐阅读
- c++ - 使用 CPP 中的 ifstream 和自定义代码逐行读取文件以打印频率和百分比的数量
- javascript - 在 React 中从 ...this.props 中删除 prop
- python - 在循环python中设置字段宽度和右对齐
- c++ - 投掷物体时,是复制还是移动?
- java - 如何使用 Spring“匹配”方法检查旧密码?
- c# - 如何覆盖默认 JsonConverter(在属性中指定)
- amazon-s3 - NiFi数据插入s3子目录
- stored-procedures - 删除距当前时间 2 个月前最近访问的 Redshift 表
- javascript - 如何使用 Jest / Enzyme 模拟 onKeyDown 事件?
- javascript - 在 Angular 应用程序中使用 CKEditor5 自定义构建